を異なるインタフェースの実装をバインドしますNinject - 私は(Ninjectを使用)DIに新たなんだとばかり概念を学ぶために始めたが、私はこれを理解するためにしばらくの間、私の頭を悩まてきた同じクラスに
私のプログラムに同じクラスの別の使用法があるとします(ProcessContext
の例)。
ファーストクラス(SomeClass
):にProcessContext
インスタンスを注入したいと思います。
2番目のクラス(SomeOtherClass
):を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