gpt4 book ai didi

c# - 日志类应该作为依赖项插入还是应该使用静态方法

转载 作者:行者123 更新时间:2023-11-30 22:11:59 25 4
gpt4 key购买 nike

我知道日志记录是一个横切关注点,我通常使用 AOP 来记录一般的任何错误或异常。但是,我面临这样一种情况,我们还必须记录有关执行的各种操作的特定信息,例如,当操作成功时,我们也必须记录它,如果 Web 服务的响应无效,我们还必须记录一些内容,根据到我们的业务规则等等。这意味着在某些情况下,记录事件成为业务流程的特定部分,并且在这些特定情况下它不是横切关注点。

为了处理这种情况,我制作了一个 DBLogger 类,它只是将一些动态消息和错误代码写入数据库。

目前我正在通过 ILogger 接口(interface)的依赖注入(inject)使用 DBLogger 类。当我查看我的代码时,我发现我在每个需要记录违反业务规则的类中注入(inject)此类,这对我来说似乎是一种代码味道。我正在考虑将 DBLogger 类设为静态并直接使用它而不是注入(inject)它。这将稍微消除代码困惑,我的构造函数将是干净的,但依赖项仍然存在。

我的问题是处理此类情况的推荐方法和最佳实践是什么,OOP 和设计模式如何在这种情况下拯救我,以阻止我违反 Open Closed Principal?

最佳答案

为了单元测试,我喜欢注入(inject)记录器。它可以更轻松地模拟记录器并避免在单元测试中定义真实记录器的依赖项。

此外,如果您的 IOC 容器已经为您定义了它,那么它是透明的并且注入(inject)它会更轻松。

关于c# - 日志类应该作为依赖项插入还是应该使用静态方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19946486/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com