我收到一个ActivationException,说激活IEventBroker时出错。 MyDataSource采用IEventBroker有一个参数。如果我不使用子内核,则没有问题。发生了什么事?
var kernel = new StandardKernel();
var childKernel = new ChildKernel(kernel);
var eventBroker = new EventBroker();
childKernel.Bind<IEventBroker>().ToConstant(eventBroker);
var myDS = childKernel.Get<MyDataSource>();
答案 0 :(得分:3)
Ninject的默认行为,即类绑定到自己的行为 不明确仍然存在。但在这种情况下,这将由 最顶级的父母。这意味着这个班级不能有任何 在子内核上定义的依赖项。我强烈建议你有一个 绑定由ninject解析但不使用的所有对象 这个默认行为。
因此,您需要将MyDataSource
显式绑定到self以使其正常工作:
var kernel = new StandardKernel();
var childKernel = new ChildKernel(kernel);
var eventBroker = new EventBroker();
childKernel.Bind<IEventBroker>().ToConstant(eventBroker);
childKernel.Bind<MyDataSource>().ToSelf();
var myDS = childKernel.Get<MyDataSource>();