为什么IDependencyResolver与System.Web紧密结合?

Joh*_*lip 3 .net c# asp.net asp.net-mvc asp.net-web-api

为什么原因IDependencyResolver耦合于System.Web组件(无论是MvcHttp在.NET框架)?

DI系统的目标不是它应该提供一种向客户提供依赖关系的不可知方式吗?如果我想IDependencyResolver不应引用与System.Web相关的任何内容的项目使用该怎么办?

编辑:
这是一个哲学问题,而不是关于如何做的请求,因为我知道还有其他选择,如开源DI库.

Nko*_*osi 6

DI系统的目标不是它应该提供一种向客户提供依赖关系的不可知方式吗?

这是正确的,但在这种情况下,IDependencyResolver特定于定义它的库.这是库的DI抽象,允许依赖解析的不可知的扩展点.而且我相信这是抽象的最初目标.

它并没有真正被其他库独立重用,这很明显,MVCWeb API都有两个版本.虽然它们具有相同的名称并具有相同的用途,但它们的实现略有不同.

它还演示了Mark Seemann在本文中提到的Conforming Container反模式,其中文章还提到了上述抽象作为.NET的Conforming Containers的已知示例.甚至我喜欢的使用方法都IServiceProvider列出了清单.

如果我想IDependencyResolver在不应引用与System.Web相关的任何内容的项目中使用该怎么办?

那么我的建议是不要使用IDependencyResolverSystem.Web程序.我还要补充一点,首先应特别注意遵循适当的设计模式,确保人们对概念有所了解,应该在哪些方面应用或避免使用.