加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – 在解决方案中有多个IoC容器是否存在问题?

发布时间:2020-12-15 21:24:28 所属栏目:百科 来源:网络整理
导读:我正在构建一个带有ASP.NET MVC前端和ServiceStack.NET Web服务的多层应用程序. 我在项目开始时就开始使用Ninject进行DI.既然我正在将ServiceStack添加到组合中,我很好奇是否有任何未来可能出现的问题: 默认情况下,ServiceStack库使用Funq作为其IoC容器.一
我正在构建一个带有ASP.NET MVC前端和ServiceStack.NET Web服务的多层应用程序.

我在项目开始时就开始使用Ninject进行DI.既然我正在将ServiceStack添加到组合中,我很好奇是否有任何未来可能出现的问题:

默认情况下,ServiceStack库使用Funq作为其IoC容器.一切似乎都正常工作,但我想知道在同一个应用程序中有两个IoC容器我是否会遇到任何问题?

解决方法

实际上并不是Funq(在ServiceStack中使用)作为一个静态绑定的IOC,它更像是一个充满缓存构造函数委托的C#字典,而不是一个功能齐全的IOC.它被包含在ServiceStack中的源表单中,因为它非常快(即接近本机速度)而被选中:
http://www.codeproject.com/Articles/43296/Introduction-to-Munq-IOC-Container-for-ASP-NET.aspx

Funq中的注册是非侵入性的,即您必须手动注册依赖项,因为它不会无差别地扫描注册所有依赖项的所有程序集.如果您选择不使用Funq并使用另一个IOC by injecting an IContainerAdapter并委托给另一个IOC,那么缓存委托的Funq词典将为空(即缓存未命中),而ServiceStack将简单地向您的首选IOC请求依赖.

唯一要记住的是,Web服务本身是由ServiceStack注册和自动连接的,而不是您首选的IOC容器,因此在这种情况下,您的IOC更像是依赖存储库.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读