我该如何调用构造函数?

时间:2010-12-01 16:09:27

标签: c# generics constructor

我在使用此调用构建的自定义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 

3 个答案:

答案 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);