gpt4 book ai didi

c# - NServiceBus Ninject 在使用 ToMethod 时找不到 NinjectObjectBuilder 范围

转载 作者:太空宇宙 更新时间:2023-11-03 14:55:32 25 4
gpt4 key购买 nike

我有一个消息上下文对象,定义为每个传入消息处理都是唯一的:

Bind<MessagingContext>().ToSelf().InUnitOfWorkScope();

我还注册了一个自定义接口(interface),通过 Ninject ToMethod 扩展动态解析:

Bind<IBus>().ToMethod(c =>
{
var messagingContext = c.Kernel.Get<MessagingContext>();
return new Bus(messagingContext);
});

目前在解析 MessagingContext 对象实例时出现异常:

Ninject.Extensions.NamedScope.UnknownScopeException
HResult=0x80131500
Message=Error activating MessagingContext
The scope NinjectObjectBuilder is not known in the current context.
No matching scopes are available, and the type is declared InNamedScope(NinjectObjectBuilder).

有什么方法可以正确解析在 ToMethod 中注册为 InUnitOfWorkScope 的对象吗?

我正在使用:

  • NServiceBus 6.4.2
  • NServiceBus.Ninject 6.0.1
  • 注入(inject) 3.2.2

最佳答案

看起来这可能是子容器和命名范围的错误。

与此同时,您可以将 MessagingContext 注册更改为:

Bind<MessagingContext>().ToSelf().DefinesNamedScope("NinjectObjectBuilder");

这至少会让 Ninject 知道 MessagingContext 类型打算在子容器中使用。

关于c# - NServiceBus Ninject 在使用 ToMethod 时找不到 NinjectObjectBuilder 范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49439593/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com