У меня есть следующий интерфейс в моем проекте.
public interface Setting<T>
{
T Value { get; set; }
}
Используя отражение, я хотел бы изучить свойства, которые реализуют этот интерфейс и извлечь значение.
Пока я написал это, который успешно создает список свойств, которые реализуют параметр.
var properties = from p in obj.GetType().GetProperties(BindingFlags.Instance | BindingFlags.Public)
where p.PropertyType.GetInterfaces().Any(x => x.IsGenericType && x.GetGenericTypeDefinition() == typeof(IAplSetting<>))
select p;
Далее я хотел бы сделать следующее: (Пожалуйста, игнорируйте неопределенные переменные, вы можете предположить, что они действительно существуют в моем реальном коде.)
foreach (var property in properties)
{
dictionary.Add(property.Name, property.GetValue(_theObject, null).Value);
}
Проблема в том, что GetValue возвращает объект.Чтобы получить доступ к Value, мне нужно иметь возможность привести к Setting<T>
.Как мне получить Value и сохранить его, не зная точного типа T?