如何修复 Activator.CreateInstance 失败,并出现 MissingMethodException

本文关键字:MissingMethodException 失败 何修复 Activator CreateInstance | 更新日期: 2023-09-27 18:35:32

我正在尝试使用以下内容创建自定义用户控件:

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

类型'[命名空间]上的构造函数。找不到 Zones.ZoneReport"。

如何创建ZoneReport

如何修复 Activator.CreateInstance 失败,并出现 MissingMethodException

>new { vmItem }应该new object[]{ vmItem } .

目前,您正在使用匿名类型作为第二个参数而不是参数数组来调用Activator.CreateInstance

由于第二个参数(用于您想要的重载)实际上是一个params参数,您也可以只使用普通vmItem编译器将生成数组:

 var zr = (THeader)Activator.CreateInstance(typeof(THeader), vmItem);
相关文章:
  • 没有找到相关文章