如何在使用 NServiceBus 4.x 的同时更新到 StructureMap 3.x?

How do I update to StructureMap 3.x while staying on NServiceBus 4.x?

我想在我的 MVC 项目上升级到 StructureMap 3.x,但我卡在 NServiceBus 4.x 因为 5.x 许可条款对我们的有限使用没有意义. MVC 项目是只发送的。

如何在保留 NSB 4.x 的同时升级 StructureMap?

我在邮件列表 here 上问了同样的问题。当时的回答是不支持这个配置,AFAIK没变。

我建议您给 Particular 发一封电子邮件,看看您是否可以解决许可问题,如果这对您的项目来说是个亮点。

而不是这个:

Configure
    .With()
    .StructureMapBuilder(ObjectFactory.Container)

使用默认容器:

Configure
    .With()
    .DefaultBuilder()

因为您不再将 ObjectFactory.Container 传递给 NServiceBus,所以您需要告诉 StructureMap 如何实现 IBus 作为依赖项,例如您的 MVC 控制器:

x.For<NServiceBus.IBus>()
    .Use(() => Configure
        .Instance
        .CreateBus()
        .Start(() => Configure.Instance.ForInstallationOn<Windows>().Install())
    );

如果你有 NServiceBus 需要创建的东西,例如实现 IMutateOutgoingMessages 的东西并且你的消息修改器有依赖关系,那么你必须告诉 NServiceBus 如何解决这些依赖关系:

Configure
    .Instance
    .Configurer
    .ConfigureComponent(
        () => new MessageMutator(new MessageMutatorDependency()),
        DependencyLifecycle.InstancePerCall
    );