Ninject中创建实例后如何调用方法?
How to call a method after creating the instance in Ninject?
我想在使用 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();
打电话。
应该怎么做?
在这种情况下,不会调用 InitializeServiceHeader()
,因为类型绑定是针对 IHardwareService
。
如果您有一个名为 HardwareServiceTest
的 class 并且它的构造函数具有类型为 IHardwareService
的参数
public Class HardwareServiceTest
{
public HardwareServiceTest(IHardwareService serv)
{
//do something with serv;
}
}
在这种情况下,调用,
new StandardKernel().Get<HardwareServiceTest>()
将触发对 InitializeServiceHeader() 的调用。
我想在使用 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();
打电话。
应该怎么做?
在这种情况下,不会调用 InitializeServiceHeader()
,因为类型绑定是针对 IHardwareService
。
如果您有一个名为 HardwareServiceTest
的 class 并且它的构造函数具有类型为 IHardwareService
public Class HardwareServiceTest
{
public HardwareServiceTest(IHardwareService serv)
{
//do something with serv;
}
}
在这种情况下,调用,
new StandardKernel().Get<HardwareServiceTest>()
将触发对 InitializeServiceHeader() 的调用。