我有一个泛型类和一个对象值 where obj.GetType().GetGenericTypeDefinition() == typeof(Foo<>)
.
class Foo<T>
{
public List<T> Items { get; set; }
}
我如何获得Items
from的值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's null