我在使用此调用构建的自定义linq提供程序中动态创建对象的实例:
object result = Activator.CreateInstance(typeof(T));
我的T类型实现了一个抽象类,它有一个构造函数来获取另一个对象的实例(T本质上是一个包装器)。我的问题是 - 有没有一种方法可以显式调用非默认构造函数,所以我可以摆脱这个:
MyEntity entity = result as MyEntity;
if(entity != null)
entity.UnderlyingEntity = e; //where e is what I am wrapping
答案 0 :(得分:7)
是的,只需在Type
对象之后提供构造函数参数,如下所示:
object result = Activator.CreateInstance(typeof(T), arg1, arg2, ...);
答案 1 :(得分:2)
您可以使用variadic重载Activator.CreateInstance Method (Type, Object[]),它将使用最佳匹配构造函数。
答案 2 :(得分:1)
您可以致电object result = Activator.CreateInstance(typeof(T), e);