这是一些课程:
public class MyClass<T,C> : IMyClass where T : SomeTClass where C : SomeCClass { private T t; private C c; public MyClass() { this.t= Activator.CreateInstance<T>(); this.c= Activator.CreateInstance<C>(); } }
我试图通过这样做来实现这个类的对象:
Type type = typeof(MyClass<,>).MakeGenericType(typeOfSomeTClass,typeOfSomeCClass); object instance = Activator.CreateInstance(type);
我得到的只是一个System.MissingMethodException(此对象没有no-arg构造函数)…
我的代码出了什么问题?
解决方法
听起来像typeOfSomeTClass或typeOfSomeCClass是一个没有公共无参数构造函数的类型,如下所示:
this.t = Activator.CreateInstance<T>(); this.c = Activator.CreateInstance<C>();
您可以通过约束强制执行:
where T : SomeTClass,new() where C : SomeCClass,new()
在这种情况下,你也可以这样做:
this.t = new T(); this.c = new C();