在依赖注入中,我理解为什么我们需要带有 2 个类型参数的 Register()。
myContainer.Register<I1,A>();
从现在开始,类型为I1的参数,在ctors中,会得到A的实例。太好了。我们不需要处理创建,依赖注入容器会给我们带来我们需要的东西(不管是不是 Singleton)。
现在,我不明白的是
myContainer.Register<B>();
我们没有将任何接口映射到这个具体类型B。
它有什么用?
在依赖注入中,我理解为什么我们需要带有 2 个类型参数的 Register()。
myContainer.Register<I1,A>();
从现在开始,类型为I1的参数,在ctors中,会得到A的实例。太好了。我们不需要处理创建,依赖注入容器会给我们带来我们需要的东西(不管是不是 Singleton)。
现在,我不明白的是
myContainer.Register<B>();
我们没有将任何接口映射到这个具体类型B。
它有什么用?
您不需要用于依赖注入的接口。但是依赖注入对它们更有用!
您可以使用服务集合注册具体类型,ASP.NET Core 会毫无问题地将它们注入到您的类中。
通过注入它们而不是简单地创建实例所获得的好处
你应该这样做吗?不。
依赖注入是依赖倒置原理的工具:https ://en.wikipedia.org/wiki/Dependency_inversion_principle
如 SOLID 中所述
一个人应该“依赖于抽象,而不是具体”。