.Net Core 依赖注入获取两个工厂方法生成的不同实例

我有两个静态类,每个类都有一个静态工厂方法。


public static class First

{

 public IMyService Factory()

 {

   return IMyService()

   {

    //configure with Configs

   };

 }

}


public static class Second

{

 public IMyService Factory()

 {

  return IMyService()

  {

   // configure with different Configs

  };

 }

}

以下将使提供者在被要求时返回一个实例:


   services.AddSingleton(mb =>

            {

                var myService= First.Factory();

                return myService;

            });

当需要获取具有不同配置的实例时,如何调用不同的工厂?


温温酱
浏览 260回答 2
2回答

幕布斯7119047

您的客户端代码或引导代码需要以某种方式表达所需的实现类型。您可以通过以下方式实现它:public Interface IReqeust{    // Some code}public class HttpRequest : IRequest{    // Implementation}public class TcpRequest : IRequest{    // Implementation}一种方法可能是提供多种方法。您仍然可以隐藏配置,但一些实现细节会泄漏到您的客户端代码中。public Interface IRequestFactory{    IRequest CreateHttpRequest();    IRequest CreateTcpRequest();}public class RequestFactory : IRequestFactory{    // Implementation}另一种解决方案是确定在建造工厂时需要什么。public Interface IRequestFactory{    IRequest CreateRequest();}public class RequestFactory : IRequestFactory{    private IConfigReader configReader;    public RequestFactory(IConfigReader configReader)    {        this.configReader = configReader;    }    public IRequest CreateRequest()    {        var currentProtocoll = configReader.GetCurrentProtocoll();        if(currentProtocoll is HTTP)            return new HttpRequest();        else            return new TcpRequest();    }}我不会推荐更多工厂的解决方案。至少不是你到目前为止所写的。
打开App,查看更多内容
随时随地看视频慕课网APP