如何在Ninject中创建实例后调用方法?

时间:2016-01-20 06:45:35

标签: c# dependency-injection ninject ioc-container

我想在使用Ninject创建的实例之后进行初始化 我写了以下代码:

private static void RegisterServices(IKernel kernel)
{
    kernel.Bind<IHardwareService>().To<HardwareServiceClient>().InRequestScope().OnActivation(client =>
    {
        InitializeServiceHeader(); // never execute
        client.ChannelFactory.Endpoint.Behaviors.Add(new IncludeClientData());
    });
}

我希望在以下代码之后调用InitializeServiceHeader();

var instance = new StandardKernel().Get<HardwareServiceClient>();

但永远不会InitializeServiceHeader();致电 应该怎么做?

1 个答案:

答案 0 :(得分:1)

在这种情况下,InitializeServiceHeader()不会被称为IHardwareService的类型绑定。

如果您有一个名为HardwareServiceTest的类,并且它的构造函数的参数类型为IHardwareService

public Class HardwareServiceTest
{
    public HardwareServiceTest(IHardwareService serv)
    {
       //do something with serv;
    }
}

在这种情况下,请致电

new StandardKernel().Get<HardwareServiceTest>()

将触发对InitializeServiceHeader()的调用。