같은 클래스에 서로 다른 인터페이스의 구현을 바인딩하지만 잠시이 이해하는 내 머리를 긁적했습니다 :Ninject에 - 나는 DI (Ninject에 사용) 새로운 단지 개념을 배우기 시작 해요
을 내 프로그램에서 같은 클래스의 다른 사용법을 사용한다고 가정 해 봅시다 (아래 예에서 ProcessContext
).
첫 번째 클래스에서 (SomeClass
) : 을 ProcessContext
인스턴스에 삽입하고 싶습니다.
두 번째 클래스에서 (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