asp.net-mvc – 其中Simple Injector等效于StructureMap的Object
我正在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与WebForms:速度和架构比较
- entity-framework – 如何将OData查询与DTO映射到EF实体?
- asp.net – 使用成员资格数据在aspnet_profile表中存储其他
- asp-classic – 为经典Asp Session Cookie设置HTTPONLY
- asp.net-mvc – ASP.NET MVC中的动态网站地图
- ASP.NET MVC 3.0部分内部和外部表单具有不显眼的数据验证属
- ASP.NET核心Facebook身份验证中间件用户图片
- asp.net – 如何获取用户在MVC 5中注册的角色的ID
- asp.net – 如何构建专门的JQuery Timer
- 如何在kendo UI MVC菜单中添加字体真棒图标?
- asp.net-mvc – 流畅的NHibernate和存储库模式
- 如何在ASP.NET应用程序中避免SQL注入攻击?
- asp.net – 来自root抛出异常的ServiceStack RES
- asp.net – URL中的Web API嵌套资源
- asp.net-mvc-3 – ASP.NET MVC3 Razor:如何遵循
- 存储过程 – 经典ASP – ADO执行存储过程传入??参
- asp.net-mvc-4 – 使用Windows Azure Active Dir
- asp.net-mvc – MVC3中的Url.RouteUrl()和Url.Ac
- asp.net core 实现支持多语言
- asp.net – 如何防止低效的SQL查询减慢数据库服务