如何反射获取List<T> 中泛型的类型

 我来答
kz...m@163.com
2017-11-17 · 超过38用户采纳过TA的回答
知道答主
回答量:97
采纳率:62%
帮助的人:10万
展开全部
Class1s xx = new Class1s();
var inters = xx.GetType().GetInterfaces();//获取所有继承的泛型类型
if (inters.Length > 0)
{
var ts = inters[0].GetGenericArguments();//获取第一个泛型的形参类型数组
if (ts.Length > 0)
{
var res = ts[0];//获取到Class1
//todo:后续代码
}
}
已知类型Class1,获取它的属性集合,你上面的代码已经有了。

有点要注意,在获取第一个泛型的形参类型那里,不用的类型继承的泛型接口也不同,例如,可能是IList、IList、Dictionary的,所以不一定是第一个泛型就可以获取出T。这里应该还是有根据实际情况做相应处理的过程。

另外,如果已知是List的话,有一个很简单的方法:
xx.GetType().GetMethod("Find").ReturnType。就可以返回Class1的Type了,这种就很有针对性,专门针对List的T Find()函数设计。获得Find函数的返回类型即可。

希望能给你启示。
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式