mirror of
https://github.com/sinai-dev/UnityExplorer.git
synced 2025-06-17 06:28:42 +08:00

- Use explicit type of var - Use 'new()' - Remove unnecessary usings - Sort usings - Apply formatting
55 lines
1.5 KiB
C#
55 lines
1.5 KiB
C#
using System;
|
|
using System.Reflection;
|
|
using UnityExplorer.Inspectors;
|
|
|
|
namespace UnityExplorer.CacheObject
|
|
{
|
|
public class CacheField : CacheMember
|
|
{
|
|
public FieldInfo FieldInfo { get; internal set; }
|
|
public override Type DeclaringType => FieldInfo.DeclaringType;
|
|
public override bool IsStatic => FieldInfo.IsStatic;
|
|
public override bool CanWrite => m_canWrite ?? (bool)(m_canWrite = !(FieldInfo.IsLiteral && !FieldInfo.IsInitOnly));
|
|
private bool? m_canWrite;
|
|
|
|
public override bool ShouldAutoEvaluate => true;
|
|
|
|
public CacheField(FieldInfo fi)
|
|
{
|
|
this.FieldInfo = fi;
|
|
}
|
|
|
|
public override void SetInspectorOwner(ReflectionInspector inspector, MemberInfo member)
|
|
{
|
|
base.SetInspectorOwner(inspector, member);
|
|
}
|
|
|
|
protected override object TryEvaluate()
|
|
{
|
|
try
|
|
{
|
|
object ret = FieldInfo.GetValue(DeclaringInstance);
|
|
LastException = null;
|
|
return ret;
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
LastException = ex;
|
|
return null;
|
|
}
|
|
}
|
|
|
|
protected override void TrySetValue(object value)
|
|
{
|
|
try
|
|
{
|
|
FieldInfo.SetValue(DeclaringInstance, value);
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
ExplorerCore.LogWarning(ex);
|
|
}
|
|
}
|
|
}
|
|
}
|