Dependency injection 实现相同接口的两个类

Dependency injection 实现相同接口的两个类,dependency-injection,asp.net-core-mvc,Dependency Injection,Asp.net Core Mvc,我想知道在依赖项注入中有两个实现相同接口的类是否是一个好的实践: public interface ITest { String get_message(); } public class Test1: ITest { public String get_message() { return "I am Test1"; } } public class Test2 : ITest { public String get_message()

我想知道在依赖项注入中有两个实现相同接口的类是否是一个好的实践:

public interface ITest
{
    String get_message();
}
    
public class Test1: ITest
{
    public String get_message() { return "I am Test1";  }
}

public class Test2 : ITest
{
    public String get_message() { return "I am Test2"; }
}
在ConfigureServices()方法(Startup.cs)中:我添加了:

    services.AddTransient<ITest, Test1>();
    services.AddTransient<ITest, Test2>();
services.AddTransient();
services.AddTransient();
我的问题是:当我想通过依赖注入访问Test1/Test2类时,如何区分Test1和Test2


谢谢

这一切都取决于你到底想做什么。场景是什么?事实上,我想理解为什么DI配置应该是这样的:services.AddTransient();而不是服务;或服务。AddTransient();我想了解为什么允许我们在DIBecause中配置两个具有相同接口的类,因为您可以将它们作为集合注入
ctor(IEnumerable args)
,并获取所有注册的类型。您尝试通过构造函数访问或实例化的类(class1或class2)将是您获得的类型。我认为,这应该像我们试图转换一样起作用。