调用类型的空默认构造函数

时间:2015-01-20 19:45:56

标签: c# reflection constructor

我试图在我的对象上实例化每个属性(类型为JobVmInput)。 到目前为止,这是我的代码:

var properties = this.GetType().GetProperties();

foreach (var p in properties)
{
     var type = p.PropertyType;
     if (type.IsSubclassOf(typeof(JobVmInput)))
     {
          var constructor = type.cons.GetConstructor(**what to input here**);
          p.SetValue(p, constructor.Invoke(**what to input here**));
     }
}

但是我不知道在GetConstructor和constructor.Invoke方法中输入什么。我查看了MSDN文档,但我对他们接受的内容非常不确定。我只想调用空的默认构造函数。

1 个答案:

答案 0 :(得分:5)

您可以使用:

var constructor = type.GetConstructor(Type.EmptyTypes);
p.SetValue(this, constructor.Invoke());

或者:

p.SetValue(this, Activator.CreateInstance(type));

请注意,我已将第一个参数替换为this,因为SetValue方法需要object的实例而不是PropertyInfo