2011-12-04 37 views
3

我想为泛型类使用反射创建类。
有人能告诉我如何创建它?使用反射为泛型类创建构造函数

public class SomeClass<T> 
{ 
    .... 
} 

我需要使用反射来创建一个类为SomeClass<T>

+0

构造函数在哪里? – Jon

回答

7

使用MakeGenericType方法:

Type myParameterizedSomeClass = typeof(SomeClass<>).MakeGenericType(typeof(MyParameter)); 
ConstructorInfo constr = myParameterizedSomeClass.GetConstructor(typeof(ConstrParamType1),typeof(ConstrParamType2)); 
+0

谢谢,我在C#.2.0版本中对此进行了标记。这有可能吗? – VIRA

+0

@Raj我相当确定它是。你试过了吗? – dasblinkenlight

+0

var在C#.Net 2.0中不可用。我希望这不是我正在寻找的答案.. – VIRA

0

你需要使用实例创建在运行了一类新的反思现有类? 如果是前者:

Class<?> c = Class.forName("SomeClass"); 
SomeClass<String> sc = (SomeClass<String>)c.newInstance(); 

如果是后者,请Javassist。还没有尝试过,但它看起来很容易使用。 我假设你正在使用Java。

+0

hoooo ....我需要这个在C#中。我认为它不回答我的问题.. :( – VIRA