Я пытаюсь создать пользовательский элемент управления пользователя со следующим:Как исправить активатор.CreateInstance с ошибкой MissingMethodException «Конструктор по типу не найден»?
var panel = new GenericAccordionPanel<ZoneReport, ZonesPanel, ZonesVM>(myVm.ZonesVm);
GenericAccordionPanel
определяется как:
public class GenericAccordionPanel<THeader, TBody, TViewModel> : UserControl
{
public Accordion Accordion { get; set; }
public GenericAccordionPanel(TViewModel vmItem)
{
this.Accordion = new Accordion();
//the constructor for ZoneReport(THeader) takes a ZonesVM (vmItem) as a parameter.
var zr = (THeader)Activator.CreateInstance(typeof(THeader), new { vmItem });
var exp = new Expander { Header = zr };
Accordion.Children.Add(exp);
base.Content = Accordion;
}
}
Проблема заключается в том, что Activator.CreateInstance
терпит неудачу со следующим MissingMethodException
:
Конструктор по типу '[namespace] .Zones.ZoneReport' не найден.
Как я могу создать isntance ZoneReport
?
Вы человек, которому я обязан пиво. Это верно, спасибо. Для записи первая часть - 'new [] {vmItem}' - не работает для меня, но удаление объявления массива - '(typeof (THeader), vmItem); '- отлично работает. – DaveDev
Получил немного неряшливый и оставил «объект». Я исправлю пост. – porges