使用OnActivation()中的父对象作为参数

时间:2018-06-01 04:18:37

标签: c# .net dependency-injection ninject

我有一个我用Ninject注入的组件,它有一个成员函数,必须在实例化之后被调用。我没有把它放在构造函数中,因为它需要引用它的父对象,这将创建一个循环引用。

目前,我只是在 parent的构造函数中调用该方法,但如果我可以让Ninject为我运行该方法,那么它会更清晰并且不太可能被遗忘。

由于缺乏文档,我一直在摆弄OnActivation,但似乎无法让它发挥作用。

基本上我想做的是:

    Bind<IMessageService>().To<QueuedMessageService>().InSingletonScope()
        .OnActivation((ctx, svc) => { svc.SubscribeAll(ctx.Request.Target); });

其中SubscribeAll(object target)

AM我甚至走在正确的道路上还是我在左外野的路上?谢谢!

1 个答案:

答案 0 :(得分:2)

您可以使用IInitializable界面:

public class Parent : Ninject.IInitializable
{
    private readonly IMessageService service;

    public Parent(IMessageService service)
    {
        this.service = service;
    }

    public void Initialize()
    {
        service.SubscribeAll(this);
    }
}

初始化方法将由ninject自动调用。