치다:
public class CtorInjectionExample
{
public CtorInjectionExample(ISomeRepository SomeRepositoryIn, IOtherRepository OtherRepositoryIn)
{
this._someRepository = SomeRepositoryIn;
this._otherRepository = OtherRepositoryIn;
}
public void SomeMethod()
{
//use this._someRepository
}
public void OtherMethod()
{
//use this._otherRepository
}
}
에 맞서:
public class MethodInjectionExample
{
public MethodInjectionExample()
{
}
public void SomeMethod(ISomeRepository SomeRepositoryIn)
{
//use SomeRepositoryIn
}
public void OtherMethod(IOtherRepository OtherRepositoryIn)
{
//use OtherRepositoryIn
}
}
Ctor 주입은 확장을 어렵게하지만 (새로운 의존성이 추가 될 때 ctor를 호출하는 모든 코드는 업데이트가 필요합니다) 메소드 레벨 주입은 클래스 레벨 종속성에서 더 캡슐화 된 것으로 보이며 이러한 접근법에 대한 다른 인수를 찾을 수 없습니다 .
주사를 위해 결정적인 접근 방법이 있습니까?
(NB 나는 이것에 대한 정보를 찾고이 질문을 객관적으로 만들려고 노력했습니다.)