使用 OnActivation() 中的父对象作为参数
Using the parent object in OnActivation() as an argument
我有一个要用 Ninject 注入的组件,它有一个 必须 在实例化后调用的成员函数。我没有将它放在构造函数中,因为它需要对其父对象的引用,这会创建循环引用。
目前,我只是在 parent 的 构造函数中调用该方法,但如果我可以 Ninject 运行适合我的方法。
由于缺少文档,我一直在摆弄 OnActivation
,但似乎无法正常工作。
基本上我想做的是:
Bind<IMessageService>().To<QueuedMessageService>().InSingletonScope()
.OnActivation((ctx, svc) => { svc.SubscribeAll(ctx.Request.Target); });
其中 SubscribeAll(object target)
我是在正确的道路上还是在左路?谢谢!
您可以使用IInitializable
接口:
public class Parent : Ninject.IInitializable
{
private readonly IMessageService service;
public Parent(IMessageService service)
{
this.service = service;
}
public void Initialize()
{
service.SubscribeAll(this);
}
}
初始化方法将由ninject自动调用。
我有一个要用 Ninject 注入的组件,它有一个 必须 在实例化后调用的成员函数。我没有将它放在构造函数中,因为它需要对其父对象的引用,这会创建循环引用。
目前,我只是在 parent 的 构造函数中调用该方法,但如果我可以 Ninject 运行适合我的方法。
由于缺少文档,我一直在摆弄 OnActivation
,但似乎无法正常工作。
基本上我想做的是:
Bind<IMessageService>().To<QueuedMessageService>().InSingletonScope()
.OnActivation((ctx, svc) => { svc.SubscribeAll(ctx.Request.Target); });
其中 SubscribeAll(object target)
我是在正确的道路上还是在左路?谢谢!
您可以使用IInitializable
接口:
public class Parent : Ninject.IInitializable
{
private readonly IMessageService service;
public Parent(IMessageService service)
{
this.service = service;
}
public void Initialize()
{
service.SubscribeAll(this);
}
}
初始化方法将由ninject自动调用。