使用 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自动调用。