ISomething
를 주입하는 로직을 변경하려면
public MyClass(bool val) //[OPTION 1: Current]
{
//I Called static function to do something -> I want to inject this
...
if(val){ ... } else{ ... }
...
}
.... ctor에 모양을 생성자에서 부울 매개 변수가 기존의 클래스에 Ninject에 구현하기 위해 노력하고 같은 :
public MyClass(ISomething something, bool val) //[OPTION 2: Desired]
{
something.DoSomething();
...
if(val){ ... } else{ ... }
...
}
나는 또한 이것을 다음과 같이 불리는 일회용 클래스를 사용했다 : [예. 사용 옵션 1 -> 옵션 2]
public MyMaster(bool val)
{
this.myclass = new MyClass(val); //-> now this has to be injected, how???
}
내가 구현 변환하려고이 같은 true 또는 false 매개 변수로 using
맥락에서 몇 번, 그 : [예. 사용 옵션 1 -> 내가 하나 개의 값을 주입하고 다른를 주입하지해야하기 때문에 ... 옵션 2]
using(var master = new MyMaster(true)){...} //-> This need to be refactored or injected, how???
//...
using(var master = new MyMaster(false)){...} //-> This need to be refactored or injected, how???
로 변환하려고합니다. 어쩌면 런타임 인젝션을 구현합니까? 또한 필요한 경우 using
성명서에 포장 하시겠습니까?
참고 : 이것은 당신이 new
키워드를 사용할 때 .. 당신은 의존성 삽입 (Dependency Injection)을 포기하고, 일반적으로 (Ninject
나중에 레이어에 있습니다)
나는'true '값 ('MyClass1')을 가진 클래스와'false' ('MyClass2')를 가진 클래스 두 개를 생성하려고 생각하고있다. 'false' 대신'MyClass1' 또는'MyClass2'를 사용 하겠지만, 정확하지 않고 확장 성이없고 지저분하지 않습니다. – Jaider
하나의 해결책을 찾았지만 하위 계층에'Ninject'가 필요합니다 : http://stackoverflow.com/a/10821678/480700 – Jaider