如何注入通用接口的多个实例?

我有一个像这样的界面:


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>在消费类的构造函数中实现的所有实例?


慕桂英4014372
浏览 165回答 1
1回答

慕仙森

您将需要注入IServiceProvider到您的使用者中,然后使用一种解决方法,例如serviceProvider.GetRequiredService<IService<T>>()解决已注册的通用服务。它违反了某种形式的DI原理,但是是在方法内部获取正确实现的方法。否则,您将必须创建一个完整的类(Consumer<T>),该类已在工厂进行了类似的设置调用的工厂注册Consumer<T>。
打开App,查看更多内容
随时随地看视频慕课网APP