35 lines
1.1 KiB
C#
35 lines
1.1 KiB
C#
using System;
|
|
|
|
namespace ln.types.reflection
|
|
{
|
|
public class ReflectedValue
|
|
{
|
|
public ReflectedValue ReflectedOwner { get; }
|
|
public object Owner { get; }
|
|
|
|
public AttributeDescriptor AttributeDescriptor { get; }
|
|
public object Value { get; private set; }
|
|
|
|
public ReflectedValue(object owner, string attributeName)
|
|
{
|
|
Owner = owner;
|
|
AttributeDescriptor = TypeDescriptor.GetDescriptor(Owner.GetType()).GetAttributeDescriptor(attributeName);
|
|
Value = AttributeDescriptor.GetValue(Owner);
|
|
}
|
|
public ReflectedValue(ReflectedValue reflectedOwner, string attributeName)
|
|
{
|
|
ReflectedOwner = reflectedOwner;
|
|
Owner = reflectedOwner.Value;
|
|
AttributeDescriptor = TypeDescriptor.GetDescriptor(Owner.GetType()).GetAttributeDescriptor(attributeName);
|
|
Value = AttributeDescriptor.GetValue(Owner);
|
|
}
|
|
|
|
public virtual void Replace(object value)
|
|
{
|
|
AttributeDescriptor.SetValue(Owner, value);
|
|
Value = value;
|
|
}
|
|
|
|
}
|
|
}
|