加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – 删除对日志代码的依赖性

发布时间:2020-12-16 01:43:58 所属栏目:百科 来源:网络整理
导读:我更喜欢设计问题,因为我正在重构我接手的相当大的代码. 它不是模块化的,基本上它是伪面向对象的代码.它包含硬编码的依赖项,没有接口,多个职责等等.只是混乱. 其中包含大量内部调用,称为Audit,它包含Log,Info,LogError等方法……必须在应用程序配置中配置该
我更喜欢设计问题,因为我正在重构我接手的相当大的代码.

它不是模块化的,基本上它是伪面向对象的代码.它包含硬编码的依赖项,没有接口,多个职责等等.只是混乱.

其中包含大量内部调用,称为Audit,它包含Log,Info,LogError等方法……必须在应用程序配置中配置该类才能工作,否则会崩溃.这对我来说是主要的痛苦.而且,请让我们专注于响应中的问题,即使客户端代码独立于日志类/解决方案/框架.

而现在,我希望那些具有Accclass类依赖性的类,重构,以获得几个好处:

>首先是将它们很好地提取到不同的程序集中,因为我需要在其他应用程序中提供一些功能(例如生成附件代码 – 让我们称之为AttachmentsGenerator类,到目前为止,这是一个应用程序的特定功能,但现在可以使用该代码在很多地方)
>删除内部依赖项,以便其他应用程序可以利用我的AttachmentsGenerator类而无需添加对其他的引用
>做一个神奇的技巧,以便允许AttachmentsGenerator类报告一些审计信息,跟踪等.但我不希望它具有硬编码实现.事实上,我不希望它是强制性的,因此可以在没有配置内部日志记录的情况下使用AttachmentsGenerator,并且无需客户端代码添加对其他程序集的引用以便使用日志记录.底线:如果客户端代码想要使用AttachmentsGenerator,它会添加对包含该类的程序集的引用,然后它使用new运算符,这就是全部.

我可以在设计模式等方面使用什么样的方法来实现它?我希望能够找到解决这个问题的文章的一些链接 – 因为可以节省时间来详细阐述想法.或者,如果您可以建议简单的界面/类/装配草图.

非常感谢,
帕维尔

编辑1:由于我的问题不太清楚,我将再次重述:这是我的计划,还有其他有趣的方法吗?

解决方法

似乎最简单的方法是使用依赖注入.

>使用记录方法创建通用ILogger接口.>创建一个ILogger的具体实现,它对所有方法都没有任何作用(例如NullLogger)>创建另一个具体实现,实际通过您选择的任何框架进行日志记录(例如log4net)>根据您是否要启用日志记录,使用DI工具(弹簧,结构图等)注入适当的实现.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读