在代碼中,我已經定義像我可以使對象類型可配置嗎?
A a = new A();
我想使在App.config阿來配置的變量,所以可改變爲通過修改在app.config只是B點。我想知道如果我可以使用C#做到這一點?
在代碼中,我已經定義像我可以使對象類型可配置嗎?
A a = new A();
我想使在App.config阿來配置的變量,所以可改變爲通過修改在app.config只是B點。我想知道如果我可以使用C#做到這一點?
你會做這個有點不同,但使用所謂的dependency injection via an IoC (inversion of control) container。
我的最愛是ninject但你應該很容易在這裏找到它們的列表。
編輯 我忘了提及Clay。它可以通過對.net 4.0的新動態添加來執行pretty rad stuff。
看看Castle Windsor,這是一個成熟的開源項目,可以很好地滿足您的要求。如果您不想直接使用該庫,則可以瀏覽源代碼以獲取實施建議。
聽起來對我來說,你會以錯誤的方式去做這件事。根據您發佈的內容,我懷疑您希望能夠在運行時使用大部分類似但不同的類(取決於某種配置或運行時邏輯)。
爲此,我強烈建議重新設計/重新考慮您的問題。對於Abstract Factory.這個設計模式,這聽起來很完美的使用案例(結合了一些決定邏輯來決定你想要實例化哪個具體類。
你的意思是你想基於它的實例化一個類型?作爲一個字符串類型名看一看Activator.CreateInstance()
正如大家所說,一個IoC容器去的最佳方式 或者你可以用蠻力方式:
Assembly assembly = Assembly.Load(...);
var obj = assembly.CreateInstance(ConfigurationManager.AppSettings["MyDynamicType"], true);
return obj as IDynamicObject;
查看「依賴注入」或「控制反轉」 – ChrisF 2011-01-20 15:02:49