Castle windsor NServicebus CastleWindsorBuilder是否应将总线注册到容器中

Castle windsor NServicebus CastleWindsorBuilder是否应将总线注册到容器中,castle-windsor,ioc-container,nservicebus,esb,Castle Windsor,Ioc Container,Nservicebus,Esb,我有以下代码: public class MessageEndpoint : IConfigureThisEndpoint, AsA_Server, IWantCustomInitialization { private IWindsorContainer _container; public void Init() { _container = new WindsorContainer(); var bus = (IBus)Confi

我有以下代码:

public class MessageEndpoint : IConfigureThisEndpoint, AsA_Server, IWantCustomInitialization
{
    private IWindsorContainer _container;

    public void Init()
    {
        _container = new WindsorContainer();

        var bus = (IBus)Configure.With()
          .CastleWindsorBuilder(_container)
          .MsmqTransport()
          .PurgeOnStartup(true);

        _container.Register(Component.For<IWindsorContainer>().Instance(_container));
        _container.Install(FromAssembly.This());

    }
}
public class MessageEndpoint:IConfigureThisEndpoint,AsA_服务器,IWantCustomInitialization
{
私人IWindsorContainer(集装箱);;
公共void Init()
{
_容器=新WindsorContainer();
var bus=(IBus)Configure.With()
.CastleWindsorBuilder(_集装箱)
.MsmqTransport()
.PurgeOnStartup(正确);
_Register(Component.For().Instance(_container));
_container.Install(fromsassembly.This());
}
}
在代码的其他地方,我使用的是温莎安装程序,即:

 public class StorageConfiginstaller : IWindsorInstaller
{
    /// <summary>
    /// Performs the installation in the <see cref="T:Castle.Windsor.IWindsorContainer"/>.
    /// </summary>
    /// <param name="container">The container.</param><param name="store">The configuration store.</param>
    public void Install(IWindsorContainer container, IConfigurationStore store)
    {
        container.Register(Component.For<IStoreEvents>().Instance(BuildEventStore(container.Kernel)).LifeStyle.Singleton);
        container.Register(Component.For<IDetectConflicts>().ImplementedBy<ConflictDetector>());
        container.Register(Component.For<IRepository>().ImplementedBy<EventStoreRepository>());
        container.Register(Component.For<IConstructAggregates>().ImplementedBy<AggregateFactory>());
        container.Register(Component.For<IBus>().ImplementedBy<UnicastBus>());
    }

    private static IStoreEvents BuildEventStore(IKernel container)
    {
        return Wireup.Init()
            .UsingRavenPersistence("EventStore", new DocumentObjectSerializer())
            .UsingAsynchronousDispatcher()
            .PublishTo(new DelegateMessagePublisher(c => DispatchCommit(container, c)))
            .Build();
    }

    private static void DispatchCommit(IKernel container, Commit commit)
    {
        var publisher = container.Resolve<IBus>();
        publisher.Publish(commit.Events.Select(e => (IMessage)e.Body).ToArray());
    }
}
公共类StorageConfiginstaller:IWindsorInstaller
{
/// 
///在中执行安装。
/// 
///容器。配置存储。
public void安装(IWindsorContainer、IConfigurationStore)
{
container.Register(Component.For().Instance(BuildEventStore(container.Kernel)).lifety.Singleton);
container.Register(Component.For().ImplementedBy());
container.Register(Component.For().ImplementedBy());
container.Register(Component.For().ImplementedBy());
container.Register(Component.For().ImplementedBy());
}
专用静态iStoreeEvents BuildEventStore(IKernel容器)
{
返回Wireup.Init()
.UsingRavenPersistence(“EventStore”,新的DocumentObjectSerializer())
.UsingAsynchronousDispatcher()
.PublishTo(新的DelegateMessagePublisher(c=>DispatchCommit(容器,c)))
.Build();
}
私有静态void DispatchCommit(IKernel容器,Commit-Commit)
{
var publisher=container.Resolve();
publisher.Publish(commit.Events.Select(e=>(IMessage)e.Body.ToArray());
}
}
问题是-总线未在容器中注册?我怎样才能把车登记下来

*********更新*********

这不管用

 _container = new WindsorContainer();

      var c =  Configure.With()
          .CastleWindsorBuilder(_container)
          .MsmqTransport()
          .PurgeOnStartup(true);

        var bus = _container.Resolve<IBus>();
\u container=new WindsorContainer();
var c=Configure.With()
.CastleWindsorBuilder(_集装箱)
.MsmqTransport()
.PurgeOnStartup(正确);
var bus=_container.Resolve();

我已经检查了Pub/Sub示例,其中Subscriber2已经设置为使用Windsor作为其容器,添加了构造函数注入的IBus属性,并且一切都按预期工作(在版本2.5上)


请考虑不要传入_容器,只让NServiceBus为您设置。

查看CastleWindsorBuilder的代码,它似乎没有将总线注册到容器中。所以我不知道怎么做。我打赌它很简单。嗨,Udi,谢谢你的回答,我更新了我的问题,因为我给出的示例不正确-这是我的实际代码。你必须调用.UnicastBus().CreateBus();把一切都安排好。