[英]Activator.CreateInstance - MissingMethodException: Constructor on type 'xxx' not found
[英]How to fix Activator.CreateInstance failing with MissingMethodException “Constructor on type not found”?
我正在嘗試使用以下內容創建自定義用戶控件:
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'的構造函數。
如何創建ZoneReport的ZoneReport
?
new { vmItem }
應該是new object[]{ vmItem }
。
目前,您使用匿名類型作為第二個參數調用Activator.CreateInstance
,而不是參數數組。
由於第二個參數(對於你想要的重載)實際上是一個params
參數,你也可以只使用普通的vmItem
,編譯器將生成數組:
var zr = (THeader)Activator.CreateInstance(typeof(THeader), vmItem);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.