我有一組類,每一個都是不同的strategy做同樣的工作。創建一個只知道類名的對象?
namespace BigCorp.SuperApp
{
public class BaseClass { }
public class ClassA : BaseClass { }
public class ClassB : BaseClass { }
}
要使用的策略選擇是可配置的。我只想在app.config文件中配置類名'ClassB'而不是完整類型名'BigCorp.SuperApp.ClassB'。
<appConfig>
<SuperAppConfig>
<Handler name="ClassB" />
</SuperAppConfig>
</appConfig>
然而,反射調用失敗,因爲他們預計全類型名,特別是
Type t = Type.GetType("ClassB"); // results in t == null
BaseClass c = Activator.CreateInstance(t) as BaseClass; // fails
我怎樣才能得到這個工作,而只配置類的名字嗎?將名稱空間連接到完整類型名稱的類名稱?是否有另一個反射電話有效?
如果您認爲這是無用的,我應該期望配置包含完整的類型名稱,我願意接受該解決方案!只是提供理由來說服我。
(我不會從這個裝配/名稱空間外裝型)
我可以使用IoC容器,處理長名稱,併爲我完成對象創建! – 2009-12-01 14:02:56