2021-04-27 21:22:48 +10:00
|
|
|
|
using System;
|
|
|
|
|
using System.Collections.Generic;
|
|
|
|
|
using System.Linq;
|
|
|
|
|
using System.Reflection;
|
|
|
|
|
using System.Text;
|
|
|
|
|
|
|
|
|
|
namespace UnityExplorer.UI.Inspectors.CacheObject
|
|
|
|
|
{
|
|
|
|
|
public class CacheField : CacheMember
|
|
|
|
|
{
|
|
|
|
|
public FieldInfo FieldInfo { get; internal set; }
|
2021-05-01 20:55:27 +10:00
|
|
|
|
public override Type DeclaringType => FieldInfo.DeclaringType;
|
2021-04-27 21:22:48 +10:00
|
|
|
|
|
2021-04-28 20:47:48 +10:00
|
|
|
|
public override bool ShouldAutoEvaluate => true;
|
|
|
|
|
|
2021-04-30 21:34:50 +10:00
|
|
|
|
public override void SetInspectorOwner(ReflectionInspector inspector, MemberInfo member)
|
2021-04-27 21:22:48 +10:00
|
|
|
|
{
|
2021-04-30 21:34:50 +10:00
|
|
|
|
base.SetInspectorOwner(inspector, member);
|
2021-04-27 21:22:48 +10:00
|
|
|
|
|
2021-04-28 20:47:48 +10:00
|
|
|
|
// not constant
|
|
|
|
|
CanWrite = !(FieldInfo.IsLiteral && !FieldInfo.IsInitOnly);
|
2021-04-27 21:22:48 +10:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
protected override void TryEvaluate()
|
|
|
|
|
{
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
Value = FieldInfo.GetValue(this.ParentInspector.Target.TryCast(this.DeclaringType));
|
|
|
|
|
}
|
|
|
|
|
catch (Exception ex)
|
|
|
|
|
{
|
|
|
|
|
HadException = true;
|
|
|
|
|
LastException = ex;
|
|
|
|
|
}
|
|
|
|
|
}
|
2021-04-29 21:01:08 +10:00
|
|
|
|
|
|
|
|
|
protected override void TrySetValue(object value)
|
|
|
|
|
{
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
FieldInfo.SetValue(FieldInfo.IsStatic ? null : ParentInspector.Target, value);
|
|
|
|
|
}
|
|
|
|
|
catch (Exception ex)
|
|
|
|
|
{
|
|
|
|
|
ExplorerCore.LogWarning(ex);
|
|
|
|
|
}
|
|
|
|
|
}
|
2021-04-27 21:22:48 +10:00
|
|
|
|
}
|
|
|
|
|
}
|