StructureMap和ASP .Net Web API和.Net Framework 4.5
发布时间:2020-12-15 19:02:53 所属栏目:asp.Net 来源:网络整理
导读:当前版本的StructureMap是否支持ASP .Net Web API,MVC 4和.NET Framework 4.5? 解决方法 如 here所示,Web API使用依赖关系解析器. class StructureMapDependencyResolver : IDependencyResolver{ public IDependencyScope BeginScope() { return this; } pu
当前版本的StructureMap是否支持ASP .Net Web API,MVC 4和.NET Framework 4.5?
解决方法
如
here所示,Web API使用依赖关系解析器.
class StructureMapDependencyResolver : IDependencyResolver { public IDependencyScope BeginScope() { return this; } public object GetService(Type serviceType) { return ObjectFactory.GetInstance(serviceType); } public IEnumerable<object> GetServices(Type serviceType) { return ObjectFactory.GetInstances(serviceType); } public void Dispose() { } } 在Global.asax.cs中,包括这一行来注册依赖关系解析器: GlobalConfiguration.Configuration.DependencyResolver = new StructureMapDependencyResolver(); 除此之外,新的Web API非常易于与IoC容器一起使用. 我还没有看到它,但我相信我留下空白的BeginScope方法可以与子容器一起使用. 编辑: 上述实施工作很好其实我更喜欢这个替代我即将告诉你的.这将解决任何类型,以最好的StructureMap的能力,并会在出现问题时抛出错误.我喜欢看错,因为他们告诉我我做错了什么 但是,API希望如果出现问题,GetService将返回null.为了符合API,这是推荐的实现: public object GetService(Type serviceType) { if (serviceType.IsAbstract || serviceType.IsInterface) return ObjectFactory.TryGetInstance(serviceType); else return ObjectFactory.GetInstance(serviceType); } 区别在于TryGetInstance仅查找容器中注册的类型,如果出现问题,则返回null. serviceType.IsAbstract || serviceType.IsInterface被认为足够好的检查来决定使用哪种方法.我原来的答案是简单明了,但是@PHeiberg在这里的评论中指出,这并不完全是“正确的”.现在你有知识,使用任何似乎最好的. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- asp.net-web-api – 具有Web Api RC的Ninject InSingletonS
- 有没有办法加快asp.net中的编辑 – 编译 – 调试周期?
- asp.net-mvc – 将ASP.NET MVC应用程序与Entity Framework分
- asp.net-mvc-3 – .NET MVC 3以编程方式设置布局
- asp.net-web-api – 如何在MVC4 Web API中的自定义绑定器中
- 如何将文件从ASP.NET上载到另一个Web应用程序
- asp.net-core – 为什么我的JWT承载认证在令牌表示5分钟后将
- asp.net-core – 针对每个记录器定位不同的提供程序
- asp-classic – 从ASP访问IIS WMI提供程序的访问被拒绝错误
- asp.net-mvc – EF实体与服务模型与查看模型(MVC)