asp.net-mvc – 其中Simple Injector等效于StructureMap的ObjectFactory
|
我正在ASP.NET MVC3应用程序中从StructureMap迁移到Simple Injector. 我正在使用控制器DI的MVC3扩展,但我遇到了尝试替换StructureMap的静态方面的问题.我们有电话 StructureMap.ObjectFactory.GetInstance<Interface>() 在应用程序的不同层.它看起来不像Simple Injector有办法做到这一点. 我错过了什么吗?或者Simple Injector不适用于我的应用程序? 请提前通知并表示感谢. 解决方法允许应用程序直接访问容器被认为是不好的做法.它是 Service Locator pattern的一种形式,被认为是 anti-pattern:
因为这被认为是一件坏事,Simple Injector不包含任何类似StructureMap的ObjectFactory.GetInstance.事实上,ObjectFactory API的StructureMap is considering the removal的作者在一个版本发布的StructureMap中. 但是,没有什么能阻止您将SimpleInjector.Container实例存储在静态字段中,并让应用程序使用它: // Service Locator implementation in low application layer.
public static class ObjectFactory
{
private static SimpleInjector.Container container;
public static void SetContainer(Container container)
{
ObjectFactory.container = container;
}
public static void GetInstance<T>() where T : class
{
return container.GetInstance<T>();
}
}
在Composition根目录中: public static void Initialize()
{
var container = new Container();
InitializeContainer(container);
DependencyResolver.SetResolver(
new SimpleInjectorDependencyResolver(container));
// Set the service locator here
ObjectFactory.SetContainer(container);
}
因此,Simple Injector没有任何限制可以阻止你这样做,但坦率地说,你已经看到了Service Locator是一件坏事的原因之一:你切换了容器,现在你必须更改应用程序代码. 也许现在最简单的方法是将容器保存在静态字段中(如上例所示),但是请花时间理解为什么这种模式不好,并且重构从这种模式转向依赖注入(和特别是构造函数注入). 祝好运. (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- asp.net-mvc – 重定向页面的TempData?
- ASP.NET:获取页面的文件名
- 将NUnit添加到ASP.NET MVC测试框架的选项
- asp.net-mvc – ASP.NET MVC如何知道方法是一种动作方法?
- asp.net-mvc – 如何在实体框架中为GUID设置NewId()
- asp.net-mvc – 数据注释真的是一个好主意验证吗?
- asp.net – Sys.WebForms.PageRequestManagerServerErrorEx
- ASP.NET MVC中的asp.net-mvc – 文件大小上传限制:web.con
- asp.net – System.Web.Security.AntiXss.AntiXssEncoder与
- asp.net – 从URLReferrer获取querystring
- asp.net-mvc-4 – OAuth2和DotNetOpenAuth – 实
- asp.net – ConfigurationManager.AppSettings缓
- asp.net-mvc-3 – 如何根据当前页面和/或主页在O
- ASP.NET Web API将http响应转换为json数组
- asp.net-mvc – ASP.NET MVC:将复杂类型绑定到选
- asp.net – Mysql中int(10)的最大大小是多少?
- 流作为System.Net.Mail的附件是0字节
- asp.net – 我从添加引用对话框中找不到System.W
- asp.net – 引用不稳定的DLL
- asp.net-mvc – 使用MVC将数据导入局部视图或布局
