我有一個(gè)抽象類,我想將其初始化為擴(kuò)展它的類。我有子類名稱作為字符串。除此之外...String childClassString;MyAbstractClass myObject;if (childClassString = "myExtenedObjectA") myObject = new ExtenedObjectA();if (childClassString = "myExtenedObjectB") myObject = new ExtenedObjectB();我怎樣才能做到這一點(diǎn)?基本上,我該如何擺脫if語句?
3 回答

米琪卡哇伊
TA貢獻(xiàn)1998條經(jīng)驗(yàn) 獲得超6個(gè)贊
查看Activator.CreateInstance()。
myObject = (MyAbstractClass)Activator.CreateInstance("AssemblyName", "TypeName");
要么
var type = Type.GetType("MyFullyQualifiedTypeName");
var myObject = (MyAbstractClass)Activator.CreateInstance(type);

翻翻過去那場雪
TA貢獻(xiàn)2065條經(jīng)驗(yàn) 獲得超14個(gè)贊
我相信這應(yīng)該有效:
myObject = (MyAbstractClass)Activator.CreateInstance(null, childClassString);
第null一個(gè)參數(shù)中的in默認(rèn)為當(dāng)前執(zhí)行的程序集。有關(guān)更多參考:MSDN
編輯:忘記投射到 MyAbstractClass
- 3 回答
- 0 關(guān)注
- 526 瀏覽
添加回答
舉報(bào)
0/150
提交
取消