我试图在我的对象上实例化每个属性(类型为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文档,但我对他们接受的内容非常不确定。我只想调用空的默认构造函数。
答案 0 :(得分:5)
您可以使用:
var constructor = type.GetConstructor(Type.EmptyTypes);
p.SetValue(this, constructor.Invoke());
或者:
p.SetValue(this, Activator.CreateInstance(type));
请注意,我已将第一个参数替换为this
,因为SetValue
方法需要object
的实例而不是PropertyInfo