使用反射创建泛型类型

时间:2018-03-25 14:37:57

标签: c# reflection

我正在大学学习C#,我必须创建一个带反射的泛型类实例,但我不知道该怎么做。这是我的代码:

public class MyClass <A, B>
{
    protected A a;
    protected B b;
    public MyClass(A a, B b) { this.a = a; this.b = b; }
}
 static void Main(string[] args)
    {
        Type typ = typeof(MyClass<int, int>);
        object obj = Activator.CreateInstance(typ);

    }

我的问题是:如何将参数传递给构造函数并使用typeof初始化字段(类似于MyClass c = new MyClass(4,6);不使用反射)?

1 个答案:

答案 0 :(得分:3)

你需要写

typeof(MyClass<,>).MakeGenericType(type, otherType);

typeof(MyClass<,>)返回未指定参数的开放泛型类型MakeGenericType()然后从那里创建一个封闭(或具体)泛型类型,它确实指定了参数。