nServiceBus IOC接口

时间:2012-03-13 21:14:14

标签: castle-windsor nservicebus

我在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)来做我想要的任何其他注册?

1 个答案:

答案 0 :(得分:2)

您可以将nServiceBus传递给要使用的容器,您可以在以下时间引用它:

 _container = new WindsorContainer();

Configure.With().CastleWindsorBuilder(_container).JsonSerializer();

 _container.AddComponent<ISmtpClient, CustomSmtpClient>();