从具有超类声明类型的List中获取List Type

本文关键字:List 获取 Type 类型 超类 声明 | 更新日期: 2023-09-27 18:01:41

我有三个类(动物,哺乳动物和爬行动物),其中哺乳动物和爬行动物是动物的子类。

我有一个动物列表,我只填充哺乳动物或爬行动物。我想在运行时获得列表中的类型

使用列表本身不起作用。

Type type = myList.GetType().GetProperty("Item").PropertyType;
// type -> Animal
Type type = myList.GetType().GetGenericArguments()[0];
// type -> Animal

这个列表也是另一个类的属性,我们称它为Biome。生物群落有两个属性,爬行动物(列表)和哺乳动物(列表)。给定一个实例集合属性,我能找到项目类型吗?

从具有超类声明类型的List中获取List Type

获取列表中项目的类型,而不是列表的类型:

Type type = myList[0].GetType();

如果您使用的是。net 4.0并且在创建列表时知道元素的类型您可以应用泛型协方差如下:

List<Animal> myList = new List<Reptile>();

将使用Reflection生成适当的输出

相关文章: