我有这样的界面:
public interface IService<T>
{
void DoSomething(T obj)
}
以及几个实施:
public class ServiceA : IService<A>
{
public void DoSomething(A a)
}
public class ServiceB : IService<B>
{
public void DoSomething(B b)
}
如何在消费类的构造函数中注入实现IService<T>
的所有实例?
答案 0 :(得分:1)
您需要将IServiceProvider
注入您的使用者,然后使用像serviceProvider.GetRequiredService<IService<T>>()
这样的解析方法来解析已注册的通用服务。
它违反了某种形式的DI原则,但却是在方法中获得正确实现的方法。否则,您必须创建一个在工厂注册的整个类(Consumer<T>
),该工厂执行类似的调用以设置Consumer<T>
。