我正在製作一個支持多個數據庫的應用程序。 beerhouse體系結構使用下面的單例從正確的提供者實例化正確的類。數據庫工廠設計
static private ArticlesProvider _instance = null;
static public ArticlesProvider Instance
{
get
{
if (_instance == null)
_instance = (ArticlesProvider)Activator.CreateInstance(
Type.GetType(Globals.Settings.Articles.ProviderType));
return _instance;
}
}
我有存儲自定義欄目中我web.config
的providertype,我試圖建立一個工廠,實例化基礎上,集供應商正確的DAL類。
上面的代碼當前將整個名稱空間存儲在web.config
中,與相關的DAL類相關,並且有點受限制,因爲它只創建ArticlesProvider
的實例。我怎樣才能製造一個通用工廠,所以我可以通過例如SqlServer和任何類,例如ArticleDAL,我想實例化的提供類型?
預先感謝您。
嗨詹姆斯提供商, ninject看起來有趣,唯一的是我仍然在學習.Net,所以想知道學習曲線是否會有點陡峭。 – gdp 2010-11-03 15:14:19
我已經仔細研究了ninject,我得到了DI背後的概念,並認爲我理解如何在我的頁面/類中使用setter注入。不過,我很好奇我將在哪裏部署它,我目前有3層UI,BL,DAL,並且正在考慮業務層。它是否正確? – gdp 2010-11-04 00:09:03
geppie - 您可以在所有圖層上使用它。例如,在MVC應用程序中通常使用DI生成控制器,以便您可以自動注入構造器參數 - 例如對BL的引用。在您的存儲庫中,您可以將引用注入到DAL中。把它看作是一種打破層內依賴關係的方法 - 也可以在層之間進行。開始時可能很難解決 - 但是當你熟悉它時,你應該看到它在很多層面都有效。一旦你開始考慮單元測試,它就變得非常寶貴。 – 2010-11-04 20:27:01