【发布时间】:2014-02-05 19:37:41
【问题描述】:
请原谅一个真正的但 n00b 级别的查询。我正在做一个新项目并开始研究它的 IoC 方面。这是我负责构建框架的第一个工作,所以我对 IoC 有所了解。我强烈推荐使用 Ninject。凉爽的。
但是当我坐下来创建我的第一个依赖于构造函数注入的类时,我感到很震惊——我仍然需要在构造函数中使用所有这些完全自定义/第 3 方接口。那么,如果我的类在其构造函数中都采用 log4net ILog 实例,那么我的代码与 log4net 的耦合度如何?我仍然需要在每个想要记录任何内容的文件中使用 log4net 语句。
我认为 是重点 - 对众多类进行抽象和解耦,并将所有依赖项推入一个类。在我看来,每个想要记录任何内容的类仍然非常绑定到 log4net,并且将 log4net 更改为另一个记录器仍然是乏味的。这是怎么赢的?
我确定我错过了什么,所以请帮帮我?我是否打算在任何我想真正解耦的地方创建自己的接口,然后为实现添加适配器或其他东西?只有这样,我们才会将所有依赖项推到一个区域。
【问题讨论】:
-
考虑将您的横切关注点(日志记录)移动到一个装饰器类中,然后向 Ninject 注册。并为您的第三方依赖项使用代理类。
-
是的,这样的讨论是我所期待的。抱歉,它没有出现在我的搜索中。
标签: c# dependency-injection inversion-of-control