C# 寄存器中的一种类型参数而不是寄存器中的两种类型参数有什么意义?

C# 寄存器中的一种类型参数而不是寄存器中的两种类型参数有什么意义?,c#,dependency-injection,tinyioc,dependency-resolver,C#,Dependency Injection,Tinyioc,Dependency Resolver,在依赖注入中,我理解为什么我们需要使用两个类型参数注册 myContainer.Register<I1,A>(); 从现在起,类型为I1的参数(在ctors中)将获得A的实例。 太棒了。我们不需要处理创建,依赖项注入容器将为我们带来我们所需要的东西,无论它是单例还是非单例 现在,我不明白的是 myContainer.Register<B>(); 我们没有将任何接口映射到这个具体的类型B 它对什么有用?依赖项注入不需要接口。但是依赖注入对它们更有用 您可以向服务集合注册

在依赖注入中,我理解为什么我们需要使用两个类型参数注册

myContainer.Register<I1,A>();
从现在起,类型为I1的参数(在ctors中)将获得A的实例。 太棒了。我们不需要处理创建,依赖项注入容器将为我们带来我们所需要的东西,无论它是单例还是非单例

现在,我不明白的是

myContainer.Register<B>();
我们没有将任何接口映射到这个具体的类型B


它对什么有用?

依赖项注入不需要接口。但是依赖注入对它们更有用

您可以向服务集合注册具体类型,ASP.NET内核将毫无问题地将它们注入到类中

通过注入它们而不是简单地创建实例所获得的好处

你应该这样做吗?没有

依赖项注入是实现依赖项反转原理的工具:

正如用固体描述的那样

一个人应该“依赖抽象,而不是具体”


对于未实现接口的类型,或对于请求具体类型的注入。在@CodeCaster的注释上展开。当您知道需要B的实例,但又不想使用所有相关参数调用构造函数时,这非常有用。谢谢大家。