gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 12:51:05 25 4
gpt4 key购买 nike

我正在使用 ASP.NET MVC 前端和 ServiceStack.NET Web 服务构建一个多层应用。

我在项目开始时就开始使用 Ninject 进行 DI。现在我正在将 ServiceStack 添加到组合中,我很好奇 future 是否有可能出现问题:

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

最佳答案

在 Funq(在 ServiceStack 中使用)的情况下并非如此,因为它是一个静态绑定(bind)的 IOC,它更像是一个充满缓存构造函数委托(delegate)的 C# 字典,而不是一个全功能的 IOC。它以源代码形式包含在 ServiceStack 中,之所以被选中是因为它非常快(即接近 native 速度): http://www.codeproject.com/Articles/43296/Introduction-to-Munq-IOC-Container-for-ASP-NET.aspx

Funq 中的注册是非侵入性的,即您必须手动注册您的依赖项,因为它不会不加区别地扫描您的所有程序集来注册它找到的所有依赖项。如果您选择不使用 Funq 而使用另一个 IOC by injecting an IContainerAdapter并委托(delegate)给另一个 IOC,那么你的缓存委托(delegate)的 Funq 字典将为空(即缓存未命中),ServiceStack 只会向你首选的 IOC 询问依赖项。

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

关于c# - 解决方案中有多个 IoC 容器是否存在问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7725709/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com