У меня есть общий класс и значение объекта, где obj.GetType().GetGenericTypeDefinition() == typeof(Foo<>)
.
class Foo<T>
{
public List<T> Items { get; set; }
}
Как получить значение Items
из obj
? Помните, что obj
- это Object
, я не могу отличить obj
как Foo
, потому что я не знаю, что такое T
.
Я надеялся использовать отражение для этого, но каждый раз, когда я делаю GetProperty("Items")
, он возвращает null. Однако, если кто-то знает хороший способ сделать это без отражения, во что бы то ни стало.
Скажем, мой код выглядит следующим образом:
//just to demonstrate where this comes from
Foo<int> fooObject = new Foo<int>();
fooObject.Items = someList;
object obj = (object)fooObject;
//now trying to get the Item value back from obj
//assume I have no idea what <T> is
PropertyInfo propInfo = obj.GetType().GetProperty("Items"); //this returns null
object itemValue = propInfo.GetValue(obj, null); //and this breaks because it null