gpt4 book ai didi

inversion-of-control - 城堡温莎伐木设施

转载 作者:行者123 更新时间:2023-12-04 00:14:49 24 4
gpt4 key购买 nike

我正在尝试删除一些日志记录依赖项,并偶然发现了 CaSTLe Windsor 的日志记录工具。但是,我对是否应该使用它持怀疑态度。

public class MyClass
{
public Castle.Core.Logging.ILogger Logger { get; set; }

...
}

Windsor 的日志记录工具要求您将记录器作为属性公开。这真的是一个好习惯吗?我觉得我几乎打破了封装,因为通常当我重用一个组件时,我不关心它的日志记录机制,我通常不希望看到它暴露。

如果我使用使用静态类创建日志的自定义包装器,我可以将其保密。例如:
public class MyClass
{
private static MyCustomWrapper.ILogger Logger = LogManager.GetLogger(typeof(MyClass));

...
}

我在网上搜索过我应该使用日志记录工具的原因,但我只找到关于 的文章。怎么样使用它,但不是 为什么我应该使用它。我觉得我错过了重点。暴露日志组件让我有点害怕。

最佳答案

Windsor's logging facility requires that you expose your logger as a property.



不必要。您还可以将记录器作为构造函数(即强制)依赖项。记录器通常被声明为一个属性(即可选的依赖项),因为可能没有记录器。也就是说,组件应该能够在没有记录器的情况下运行。

If I use a custom wrapper that uses a static class to create the log



那是一个服务定位器,那个代码耦合 MyClassLogManager ,恕我直言,这比你试图摆脱的更糟糕。

关于inversion-of-control - 城堡温莎伐木设施,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4184371/

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