2011-01-20 68 views
2

在代碼中,我已經定義像我可以使對象類型可配置嗎?

A a = new A(); 

我想使在App.config阿來配置的變量,所以可改變爲通過修改在app.config只是B點。我想知道如果我可以使用C#做到這一點?

+16

查看「依賴注入」或「控制反轉」 – ChrisF 2011-01-20 15:02:49

回答

0

看看Castle Windsor,這是一個成熟的開源項目,可以很好地滿足您的要求。如果您不想直接使用該庫,則可以瀏覽源代碼以獲取實施建議。

0

聽起來對我來說,你會以錯誤的方式去做這件事。根據您發佈的內容,我懷疑您希望能夠在運行時使用大部分類似但不同的類(取決於某種配置或運行時邏輯)。

爲此,我強烈建議重新設計/重新考慮您的問題。對於Abstract Factory.這個設計模式,這聽起來很完美的使用案例(結合了一些決定邏輯來決定你想要實例化哪個具體類。

1

你的意思是你想基於它的實例化一個類型?作爲一個字符串類型名看一看Activator.CreateInstance()

0

正如大家所說,一個IoC容器去的最佳方式 或者你可以用蠻力方式:

Assembly assembly = Assembly.Load(...); 
    var obj = assembly.CreateInstance(ConfigurationManager.AppSettings["MyDynamicType"], true); 

    return obj as IDynamicObject; 
相關問題