Я использовал this SO Вопрос для извлечения свойства объекта с использованием отражения.Свойство, которое я получил, является другим объектом, который имеет свойство с именем Value
, к которому мне нужно получить доступ.Все потенциальные объекты, которые я извлекаю с помощью отражения, происходят из одного класса EntityField
и поэтому все имеют свойство Value
.Я видел этот ТАК вопрос, который намекал на то, как я мог бы получить доступ к свойству Value
, но я не мог составить правильный код.Как получить доступ к свойству Value
объекта, полученного с помощью отражения?
Мои попытки
var parent = entity.GetType().GetProperty("Property");
parent.GetType().GetProperty("Value").SetValue(parent, newValue); // parent.GetType() is null
(parent as EntityField<T>).Value = newValue; // Not sure how to dynamically set T since it could be any system type
Main (оригинальный код)
private static void SetValues(JObject obj, EntityBase entity)
{
// entity.GetType().GetProperty("Property") returns an EntityField Object
// I need to set EntityField.Value = obj["Value"]
// Current code sets EntityField = obj["Value"] which throws an error
entity.GetType().GetProperty("Property").SetValue(entity, obj["Value"], null);
}
EntityField
public class EntityField<T> : EntityFieldBase
{
private Field _Field;
private T _Value;
public EntityField(Field field, T value){
this._Field = field;
this._Value = value;
}
public Field Field
{
get
{
return this._Field;
}
set
{
if (this._Field != value)
{
this._Field = value;
}
}
}
public T Value
{
get
{
return this._Value;
}
set
{
if (!EqualityComparer<T>.Default.Equals(this._Value, value))
{
this._Value = value;
this._IsDirty = true;
}
}
}
}