有没有人想过如何让两人走到一起这样我才能在课堂档案上注入IBus?
我尝试下载官方Nservicebus.Ninject包,但似乎是通过Nuget限制在Ninject的2.x行。我继续将源代码下载到Ninject的对象构建器中。我在几个试错场景中遇到了一些问题。
第一个是IBus没有通过属性注入设置。这可能是我对如何使用Objectbuilder的误解,但我的印象是通过设置公共IBus Bus {get; set;}在程序集中为我设置的类。
然后我沿着尝试的方式走了下去:
Configure.Instance.Builder.Build<IBus>()
得出以下结论:
Error activating IBus
More than one matching bindings are available.
Activation path:
1) Request for IBus
Suggestions:
1) Ensure that you have defined a binding for IBus only once.
如果我明确要求使用UnicastBus而不是IBus,我会得到一个实例,但它会在base.Activite上弹出以下内容:
More than one matching bindings are available.
Activation path:
2) Injection of dependency IBus into property Bus of type TimeoutMessageConverter
1) Request for TimeoutMessageConverter
Suggestions:
1) Ensure that you have defined a binding for IBus only once.
我并不认为自己是ninject主人(后台是spring.net),因为这个项目交给我,看看我是否可以利用它使用Ninject的现有基础设施并获得对总线的引用以调用来自项目中的调度员。一天中的大部分时间都在旋转我的轮子。
这是由Ninject加载的NServiceBus模块(设置来自另一个SO帖子):
public class NServiceBusModule : NinjectModule
{
public override void Load()
{
this.Bind<IBus>().ToConstant(this.CreateBus()).InSingletonScope();
}
private IBus CreateBus()
{
return Configure.With()
.DefineEndpointName("publishMe")
.NinjectBuilder(this.Kernel)
.XmlSerializer()
.MsmqTransport()
.IsTransactional(true)
.InMemorySubscriptionStorage()
.UnicastBus()
.CreateBus().Start(() =>
Configure.Instance.ForInstallationOn<NServiceBus.Installation.Environments.Windows>().Install());
}
}
我没有在EndpointConfig中利用任何IWantCustomInitialization,因为我认为这是我需要获取对总线的引用。
我还有另外一个想法,我可以继续将项目分开,我相信它会工作得很好(有了web应用程序 - 在global.ascx中设置总线 - 直接发布到端点和从那里开始),但试图保持在项目大纲的初始要求之内。
如果需要,我可以提供更多信息。
答案 0 :(得分:0)
NinjectBuilder
添加IBus
绑定。您有两种选择:
CreateBus()
,无需添加绑定