我将消息传递上下文对象定义为每个传入消息处理唯一:
Bind<MessagingContext>().ToSelf().InUnitOfWorkScope();
我还注册了一个自定义界面,通过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的对象?
我正在使用:
答案 0 :(得分:0)
似乎这可能是子容器和命名范围的错误。
在此期间,您可以将MessagingContext注册更改为:
Bind<MessagingContext>().ToSelf().DefinesNamedScope("NinjectObjectBuilder");
至少让Ninject知道MessagingContext类型是否打算在子容器中使用。