【发布时间】:2013-12-18 00:12:14
【问题描述】:
当我有可选的依赖项时的约定是什么,例如日志记录? 我想让它们通过属性注入。当没有人设置它之后呢?每次都检查 null 吗?或者得到一个什么都不做的假记录器? 1.该问题不仅仅与日志记录有关。 2. 通过属性注入时我要求约定。
【问题讨论】:
-
你的设计有缺陷。依赖项永远不应该是“可选的”。您能否为您的场景提供更可靠的用例?
-
这很有趣。那么当我不想在运行单元测试时记录时,它应该看起来像 logger 吗?我使用 log4net
-
如果我编写包含日志记录的库会怎样。正如我所读到的,约定是通过构造函数注入它,但我不希望用户拥有它,这就是我通过属性注入它的原因。日志记录是附加功能,而不是主要功能。为什么不能是可选的?
-
有一个标志是否记录怎么样?
-
Imran,每次我想使用它时检查那个标志这个对象与检查 null 是一样的
标签: c# design-patterns dependencies code-injection convention