首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从声明了超类类型的列表中获取列表类型

从声明了超类类型的列表中获取列表类型
EN

Stack Overflow用户
提问于 2011-07-09 06:28:21
回答 2查看 106关注 0票数 0

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

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

使用列表本身是行不通的。

代码语言:javascript
复制
Type type = myList.GetType().GetProperty("Item").PropertyType;
// type -> Animal

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

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

EN

回答 2

Stack Overflow用户

发布于 2011-07-09 06:31:12

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

代码语言:javascript
复制
Type type = myList[0].GetType();
票数 2
EN

Stack Overflow用户

发布于 2011-07-09 07:06:02

如果您使用的是.NET 4.0,并且在创建列表时知道元素的类型,则可以按如下方式应用Generic Covariance

代码语言:javascript
复制
List<Animal> myList = new List<Reptile>();

这将使用反射生成适当的输出。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6631230

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档