为什么 IDependencyResolver
与 System.Web
程序集(Mvc
或 Http
) 在 .NET 框架中?
DI 系统的目标不是应该提供一种不可知的方式来为客户提供依赖项吗?如果我想在一个不应引用与 System.Web 相关的任何内容 的项目中使用 IDependencyResolver
怎么办?
编辑:
这与其说是关于如何做的请求,不如说是一个哲学问题,因为我知道还有其他选择,例如开源 DI 库。
最佳答案
The goal of a DI system isn't that it should provide an agnostic way of serving dependencies to a customer ?
这是正确的,但在这种情况下,IDependencyResolver
特定于定义它的库。正是该库的 DI 抽象允许一个不可知的扩展点来解决依赖关系。我相信这是抽象的最初目标。
它并没有真正被其他库独立重用,这很明显,MVC 都有两个版本。和 Web API .尽管它们具有相同的名称和相同的用途,但它们的实现略有不同。
它还演示了 Conforming Container Mark Seemann 在这篇文章中提到的反模式,其中文章还提到了上述抽象作为 .NET 一致性容器的已知示例。甚至我首选的使用 IServiceProvider
的方法也列入了列表。
What if I want to use
IDependencyResolver
in a project that should not reference anything related to System.Web ?
我的建议是不要使用 System.Web 中的 IDependencyResolver
。我还要补充一点,最重要的是,应特别注意遵循正确的设计模式,确保人们了解概念以及应在何处应用或避免应用这些概念。
关于c# - 为什么 IDependencyResolver 与 System.Web 紧密耦合?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45080456/