我是新來的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