【发布时间】:2015-03-04 16:56:40
【问题描述】:
我想在我的 MVC 项目上升级到 StructureMap 3.x,但我被困在 NServiceBus 4.x 上,因为 5.x 许可条款对我们有限的使用没有意义。 MVC 项目是只发送的。
如何在保留 NSB 4.x 的同时升级 StructureMap?
【问题讨论】:
标签: c# dependency-injection nservicebus structuremap nservicebus4
我想在我的 MVC 项目上升级到 StructureMap 3.x,但我被困在 NServiceBus 4.x 上,因为 5.x 许可条款对我们有限的使用没有意义。 MVC 项目是只发送的。
如何在保留 NSB 4.x 的同时升级 StructureMap?
【问题讨论】:
标签: c# dependency-injection nservicebus structuremap nservicebus4
我在邮件列表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
);
【讨论】: