Unity Container usage With multiple implementation

Unity Container usage With multiple implementation

我想出了一个问题,Unity Container 的用途是什么,或者 NInject 如果它仅针对接口的单个​​实例进行处理。

例:一般我们这样使用

 
  </p>

<pre><code>   Public Class IEmailSender
    {
       Public Void SendEmail();
    }
    Public Class SMTP: IEmailSender
    {
        Public Void SendEmail()
        {
             // Send Email Logic using SMTP
        }
    }
    Public Class OtherSender: IEmailSender
    {
        Public Void SendEmail()
        {
             // Send Email Logic for Other Sender
        }
    }
    Public Class Builder
    {
      Public Static IEmailSender CreateBuilder(string senderType)
         {
              if(senderType.Equals("SMTP"))
               {
                   Return New SMTP();
               }            
            ElseIf(senderType.Equals("OTHER"))
              {
                     Return New OtherSender();
              }
         }
    }

在我的屏幕上有两个按钮 #1。从 SMTP 发送 - 事件 (EventArgs) #2。从其他发件人发送 - 事件 (EventArgs)

两种方法的逻辑相同

   IEmailSender emailSender = Builder.CreateBuilder(button.CommandArgument)
   emailSender.sendEmail();

那么,Unity 块中的 Unity 配置将如何处理这些不同的场景

或NInject活页夹,

非常感谢您的反馈。

在 Unity 中,您可以使用命名实例来注册和检索单个接口的不同实现。 首先,您需要使用适当的名称将具体类型注册到接口:

var container = new UnityContainer();
container.RegisterType<IEmailSender, SmtpSender>("SMTP");
container.RegisterType<IEmailSender, OtherSender>("OTHER");

在此之后您可以在您的代码中使用它:

IEmailSender emailSender = container.Resolve<IEmailSender>(button.CommandArgument);
emailSender.SendEmail();