我有三个类(动物,哺乳动物和爬行动物),其中哺乳动物和爬行动物是动物的子类。
我有一份动物清单,我只使用哺乳动物或爬行动物。我想在运行时获取列表中的类型。
使用列表本身不起作用。
Type type = myList.GetType().GetProperty("Item").PropertyType;
// type -> Animal
Type type = myList.GetType().GetGenericArguments()[0];
// type -> Animal
这个列表也是另一个类的属性,我们称之为Biome。 Biome有两个属性,爬行动物(List)和哺乳动物(List)。给定一个实例的集合属性,我可以找到项目类型吗?
答案 0 :(得分:2)
获取列表中项目的类型,而不是列表类型:
Type type = myList[0].GetType();
答案 1 :(得分:0)
如果您使用的是.NET 4.0并且在创建列表时知道元素的类型,则可以按以下方式应用Generic Covariance:
List<Animal> myList = new List<Reptile>();
这将使用Reflection生成适当的输出。