我是新来的DI(使用Ninject)和刚开始学的概念,但我一直在抓我的头一会儿就明白这一点:Ninject - 绑定不同的接口实现同一类
假设我的程序中有相同类的不同用法(下例中为ProcessContext
)。
第一类(SomeClass
):我想注入Implement1
到ProcessContext
实例。
第二类(SomeOtherClass
):我想将Implement2
注入ProcessContext
实例。
我该如何使用Ninject来执行绑定?
public class Implement1 : IAmInterace
{
public void Method()
{
}
}
public class Implement2 : IAmInterace
{
public void Method()
{
}
}
public class ProcessContext : IProcessContext
{
IAmInterface iamInterface;
public ProcessContext(IAmInterface iamInterface)
{
this.iamInterface = iamInterface;
}
}
public class SomeClass : ISomeClass
{
public void SomeMethod()
{
// HERE I WANT TO USE: processcontext instance with Implement1
IProcessContext pc = kernel.Get<IProcessContext>();
}
}
public class SomeOtherClass : ISomeOtherClass
{
public void SomeMethod()
{
// HERE I WANT TO USE: processcontext instance with Implement2
IProcessContext pc = kernel.Get<IProcessContext>();
}
}
这听起来像你需要的东西像[策略模式](http://stackoverflow.com/a/32415954/181087),使您可以选择基于参数的实现。这是另一个[示例](http://stackoverflow.com/a/31971691/181087),它将抽象工厂的相同模式组合在一起,以实时获取实例。 – NightOwl888