对于记录器、安全性、配置等基础设施项目,这些东西应该真正注入(inject)到需要它们的每个类中,还是应该注入(inject)到服务定位器中,然后这些类可以使用服务定位器来解决依赖关系(或一些其他机制)?
所有类都有 10 个参数 ctor 来通过 DI 满足依赖关系,这看起来真的很荒谬。它是一种代码气味 IMO。我能理解诸如存储库或服务代理/连接器之类的东西,但不能理解日志。
最佳答案
有几个选择。
class foo
{
public ILogger Logger {get;set;}
public foo()
{
Logger = NullLogger.Instance;
}
}
Castle.DynamicProxy
或自定义 .Net 属性以获取有关此方法的更多想法。 那么问题来了,为什么要向组件中注入(inject)如此多的基础设施问题?您所描述的被认为是横切关注点,通常这是通过一些 AOP(面向方面的编程)来处理的,因此核心系统中没有很多重复。
关于.net - 是否应该注入(inject)基础设施依赖项?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10853740/