我正在制作一个支持多个数据库的应用程序。 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