[英]How to instantiate a type dynamically using reflection?
我需要使用反射動態地實例化一個C#類型。 這是我的場景:我正在編寫一個基類,它需要將某個對象實例化為其初始化的一部分。 基類不知道它應該實例化的對象類型,但派生類將會。 所以,我希望派生類在base()調用中將類型傳遞給基類。 代碼看起來像這樣:
public abstract class MyBaseClass
{
protected MyBaseClass(Type myType)
{
// Instantiate object of type passed in
/* This is the part I'm trying to figure out */
}
}
public class MyDerivedClass : MyBaseClass
{
public MyDerivedClass() : base(typeof(Whatever))
{
}
}
換句話說,基類委托其派生類型選擇要實例化的對象類型。
有人可以幫忙嗎?
試試Activator.CreateInstance(Type)
您正在尋找Activator.CreateInstance
object instance = Activator.CreateInstance(myType);
此方法有各種重載,可以使用構造函數參數或其他信息來查找類型(例如字符串形式的名稱)
您可能希望使用泛型:
public abstract class MyBaseClass<T> where T : new()
{
protected MyBaseClass()
{
T myObj = new T();
// Instantiate object of type passed in
/* This is the part I'm trying to figure out */
}
}
public class MyDerivedClass : MyBaseClass<Whatever>
{
public MyDerivedClass()
{
}
}
需要where T : new()
來支持new T()
構造。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.