Log ninject resolved dependencies application start-up

半城伤御伤魂 提交于 2019-12-03 14:24:22

You can probably achieve what you are trying to do by creating your own instance of 'ActivationStrategy'. Here is one that I was using to monitor activation / deactivation:

public class MyMonitorActivationStrategy : ActivationStrategy
{
    private ILogger _logger;

    public override void Activate(Ninject.Activation.IContext context, Ninject.Activation.InstanceReference reference)
    {
        if(reference.Instance is ILogger)
        {
            _logger = (ILogger)reference.Instance;
        }
        _logger.Debug("Ninject Activate: " + reference.Instance.GetType());
        base.Activate(context, reference);
    }

    public override void Deactivate(Ninject.Activation.IContext context, Ninject.Activation.InstanceReference reference)
    {
        _logger.Debug("Ninject DeActivate: " + reference.Instance.GetType());
        base.Deactivate(context, reference);
    }
}

You wire this when you create your kernel.

    protected override IKernel CreateKernel()
    {
    var kernel = new StandardKernel();
        kernel.Components.Add<IActivationStrategy, MyMonitorActivationStrategy>();

        kernel.Load<AppModule>();

        return kernel;
    }

Hope this helps.

Bob

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!