2015-01-20 2 views
0

Я пытаюсь создать экземпляр каждого свойства (типа 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, но я совершенно уверен в том, что они принимают. Я просто хочу вызвать пустой конструктор по умолчанию.

ответ

4

Вы можете использовать:

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

Или:

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

Обратите внимание, что я заменил первый параметр в this, так как метод SetValue ожидает экземпляр вашего object а не PropertyInfo

+0

Спасибо это здорово! – JensOlsen112

Смежные вопросы