在通用列表< T>中获取实际类型的T。 [英] Get actual type of T in a generic List<T>
本文介绍了在通用列表< T>中获取实际类型的T。的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我如何在运行时使用反射在泛型列表中获取T的实际类型? 解决方案
你在问什么:
-
在泛型类型
Blah < T>
,如何获得反射类型T
?
答案:
typeof(T)
-
我有一个包含<$对于某些类型
T
,c $ c> List< T> 。如何通过反射检索T
类型
简短回答:
myList.GetType()。GetGenericArguments()[0]
长答案:
var objectType = myList.GetType();
if(!objectType.IsGenericType()||
objectType.GetGenericTypeDefinition()!= typeof(List>))
{
throw new InvalidOperationException(
对象不是任何T的List< T>);
}
var elementType = objectType.GetGenericArguments()[0];
How do I get the actual type of T in a generic List at run time using reflection?
解决方案
It depends on what exactly you’re asking:
While writing code inside a generic type
Blah<T>
, how do I get the reflection typeT
?Answer:
typeof(T)
I have an object which contains a
List<T>
for some typeT
. How do I retrieve the typeT
via reflection?Short answer:
myList.GetType().GetGenericArguments()[0]
Long answer:
var objectType = myList.GetType(); if (!objectType.IsGenericType() || objectType.GetGenericTypeDefinition() != typeof(List<>)) { throw new InvalidOperationException( "Object is not of type List<T> for any T"); } var elementType = objectType.GetGenericArguments()[0];
这篇关于在通用列表< T>中获取实际类型的T。的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文