我在nServiceBus上看到的每个样本都使用了具体类来进行IOC属性注入。如何注册界面?在下面的示例中,如何注册ISmtpClient以返回SmtpClientProxy(我已经创建的具体类)?
public class EmailNotificationMessageHandler : IHandleMessages<EmailNotificationMessage>
{
public ISmtpClient Smtp { get; set; }
public void Handle(EmailNotificationMessage message)
{
//this.Smtp = new SmtpClient("localhost", 25);
this.Smtp.SendAsync(message.FromAddress, message.ToAddress, message.Subject, message.Body, message.Id);
}
}
我的配置看起来像这样,但我不知道如何具体类型(我不想要单身人士)
Configure.With().CastleWindsorBuilder().JsonSerializer();
Configure.Instance.Configurer.ConfigureComponent<ISmtpClient>(DependencyLifecycle.InstancePerCall);
另外,有没有办法访问实际的容器(在我的情况下是Windsor)来做我想要的任何其他注册?
答案 0 :(得分:2)
您可以将nServiceBus传递给要使用的容器,您可以在以下时间引用它:
_container = new WindsorContainer();
Configure.With().CastleWindsorBuilder(_container).JsonSerializer();
_container.AddComponent<ISmtpClient, CustomSmtpClient>();