2009-11-13 169 views
1

我有一些代码可以像下面那样工作。我想知道是否有可能获得传递给DoSomething函数的泛型类型的Type对象。我意识到T是一个类型参数,但我怎么会把它变成一个类型的对象。 dosomething函数位于我想知道列表对象使用的基础类型的类中。泛型类型参数和类型

[STAThread] 
static void Main(string[] args) 
{ 
    List<string> stringList = new List<string>(); 
    DoSomething(stringList); 
} 
public void DoSomething<T>(List<T> collection) 
{ 
    //Type myType = T; ??!!? 
    //do something here with the list. 
} 

回答

12

只需使用:

Type type = typeof(T); 

通用参数,就像任何其他类型的,除非你不知道到底该类型在编译时是什么,所以假设它是在对象中最高它适合给定的类型约束(对于没有约束的System.Object)。

+0

以为我会添加什么样的通用类型的信息,希望你不介意! – RCIX 2009-11-13 11:18:05

+0

我不认为它需要,因为OP似乎很清楚泛型是什么。 ;-)但与我的队友很好。 – 2009-11-13 12:50:13