gpt4 book ai didi

c# - IoC 和绑定(bind)到接口(interface)

转载 作者:太空宇宙 更新时间:2023-11-03 13:28:09 24 4
gpt4 key购买 nike

请原谅一个真实但 n00b 级别的查询。我正在做一个新项目并开始研究它的 IoC 方面。这是我在负责构建框架的地方工作的第一个工作,所以我对 IoC 有所了解。我强烈推荐使用 Ninject。凉爽的。

但是当我坐下来创建我的第一个依赖构造函数注入(inject)的类时,它让我感到震惊——我仍然需要在构造函数中使用所有这些非常自定义的/第 3 方接口(interface)。那么,如果我的类都在其构造函数中采用 log4net ILog 实例,那么我的代码与 log4net 的耦合度如何?我仍然需要在每个想要记录任何内容的文件中使用 log4net 语句。

我认为 是重点 - 对大量类进行抽象和解耦,并将所有依赖项放入一个类中。在我看来,每个想要记录任何内容的类仍然完全绑定(bind)到 log4net,并且为另一个记录器更改 log4net 仍然是乏味的。这是怎么赢的?

我确定我遗漏了什么,所以帮我解决一下?我是否打算在任何我想真正解耦的地方创建自己的接口(interface),然后为实现或其他东西添加适配器?只有这样,我们才似乎将所有依赖项都推到了一个区域。

最佳答案

如果你使用 IOC,你将接口(interface)注入(inject)你的类,而不是实现,所以没关系。要解决您的特定问题,请尝试查看通用日志记录框架 ( http://netcommon.sourceforge.net/ ),它本身是 log4net 或许多其他日志记录框架的包装器。

这将您与通用日志记录框架相结合,但它使用非常广泛、稳定并且抽象了日志记录的具体内容,您无需自己执行任何操作。

当我过去使用它时,我使用构建后脚本将 log4net 程序集放入输出目录,因此绑定(bind)仅在运行时发生。出于测试目的,就您的代码而言,您正在通过提供的公共(public)接口(interface)与通用日志记录框架对话。

关于c# - IoC 和绑定(bind)到接口(interface),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21586842/

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