[英]Activator.CreateInstance(…) is not finding parameterized constructor
給出以下示例代碼;
class Program
{
static void Main(string[] args)
{
var results = GetChildren().ToList();
}
static IEnumerable<MyBaseClass> GetChildren()
{
return Assembly.GetExecutingAssembly()
.GetTypes()
.Where(t => t.BaseType == typeof(MyBaseClass))
.Select(o => (MyBaseClass)Activator.CreateInstance(o, null));
}
}
abstract class MyBaseClass
{ }
class MyChildClass : MyBaseClass
{
public MyChildClass(object paramOne)
{
}
}
我收到以下錯誤;
MissingMethodException:找不到類型“CreateInstanceCtorIssue.MyChildClass”的構造函數。
但是,如果我添加一個無參數構造函數,它會創建對象OK。
我試圖弄清楚為什么我要為CreateInstance提供的參數不會導致它找到正確的構造函數。 有人有任何想法嗎?
你必須傳遞構造函數參數:
.Select(o => (MyBaseClass)Activator.CreateInstance(o, new object[] { someParam }));
MyChildClass
需要一個類型為object的參數作為其構造函數 - 您必須在數組中傳遞此參數。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.