我正在大学学习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);不使用反射)?
答案 0 :(得分:3)
你需要写
typeof(MyClass<,>).MakeGenericType(type, otherType);
typeof(MyClass<,>)
返回未指定参数的开放泛型类型。 MakeGenericType()
然后从那里创建一个封闭(或具体)泛型类型,它确实指定了参数。