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();
我想出了一个问题,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();