StructureMap和ASP .Net Web API和.Net Framework 4.5
|
当前版本的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-mvc-3 – MVC 3使用RenderPage更改视图中的模型
- asp.net – 我如何做一个已经内置到dll中的程序集,特别是fl
- asp.net-mvc – 我在哪里可以初始化Orchard模块中的AutoMap
- asp.net-mvc – ASP.NET MVC日历
- asp.net – WebAPI不返回XML,即使有正确的Accepts头
- asp.net-mvc – MVC:如何将文件上传和其他表单字段发布到一
- asp.net-mvc-3 – 验证隐藏的字段
- asp.net – 在asp:超链接中分配声明值的问题 错误:这不是
- asp.net-core – ASP.NET Core 1.1中的multipart / form-da
- 在子文件夹中运行ASP.NET网站
- asp.net – HTTP错误403.14 – 访问网站时出现禁
- asp.net – IIS 7.0和IIS 7.5之间有什么区别?
- asp.net-mvc-3 – 有没有办法通过html.actionlin
- asp.net-mvc – 如何将锚/哈希的参数添加到Redir
- asp.net-mvc – 如何禁用自动完成在MVC Html助手
- asp.net-mvc – 将焦点放在不使用JavaScript的Ed
- asp.net-mvc – 如何在ASP.NET MVC 3中更新复杂模
- 我不能在ASP.NET MVC中做的事情
- 在asp.net中引用jquery的最佳方法是什么?
- asp.net-mvc – Structuremap处理DataContext对象
