到目前为止,我一直使用Unity IOC容器来解决依赖关系,这个方法非常有效。对于Unity DI,我通常会按照以下方式解析实例:
Public class TestClass {
public TestClass()
{
var instance = IOC.resolve<InterfaceClassToResolve>();
}
}
这很好用,但是看到 .net core 现在提供了一个开箱即用的 DI 容器,我更愿意使用它-与 Unity IOC 相比只有一个问题,那就是它作为构造函数参数注入,而不像上面的示例一样解析。
在大多数情况下,我发现它迫使我在多个类中链接我的依赖项,而不是仅在实际需要它们的类中解析我的依赖项。
我一直在寻找解决办法,据我所见,唯一的选择是做这样的事情:
Public class TestClass {
public TestClass(IServiceProvider serviceProvider)
{
var instance = serviceProvider.GetService<InterfaceClassToResolve>();
}
}
然后我们又回到了原点...
因此,我是不是错过了一些 .net core IOC 的功能,或者说大多数示例都想让我通过构造函数参数使用 .net core IOC 的某些秘密酱汁?