考虑:
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的任何代码都需要更新),并且方法级别注入似乎仍从类级别依赖项中进行了封装,而我找不到/针对这些方法的任何其他参数。
是否有确定的注射方法?
(注意,我已搜索有关此问题的信息,并试图使该问题变得客观。)