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