【问题标题】:Create constructor for generic class using reflection使用反射为泛型类创建构造函数
【发布时间】:2011-12-04 16:14:16
【问题描述】:

我想为泛型类创建一个使用反射的类。
谁能告诉我如何创建它?

我有

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

我需要使用反射为SomeClass&lt;T&gt; 创建一个类。

【问题讨论】:

    标签: reflection constructor c#-2.0


    【解决方案1】:

    使用MakeGenericType方法:

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

    【讨论】:

    • 谢谢,我在 C#.2.0 版本中被标记了这个。有可能吗?
    • @Raj 我有理由肯定它是。你试过了吗?
    • @Raj 你试过更新的答案了吗?它应该在 C#2.0 中工作。
    【解决方案2】:

    您是否需要在运行时使用创建新类的反射来实例化现有类? 如果是前者:

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

    如果是后者,请查看Javassist。没试过,但看起来很容易使用。 我假设您使用的是 Java。

    【讨论】:

    • 没有。它被标记为 c#
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多