首页 > 解决方案 > 避免具有单个不同属性的多个静态类

问题描述

我的应用程序由多个单独的程序集组成。按照内部约定,每个程序集都定义了一个用于记录的 id。

目前,有一个名为的基本类CoreLog提供基本功能,如Write. 其中一个参数是Id 我前面提到的。

通常,每个程序集都会定义一个名为 的类Log,该类只是调用函数CoreLog 提供程序集的唯一 ID。

这样我们就可以简单地坚持在Log.Write整个代码中使用。

这很好用,除了我必须为每个新组件最初都这样做。而且,如果有什么变化,我也必须调整大量文件。

有没有更好的方法来做到这一点?

标签: c#.netloggingstatic

解决方案


这样的事情有用吗?

public static class SomeLogger
{
    public static void Write([CallerMemberName] string caller = string.Empty, string message)
    {
         //caller will be automatically populated
    }
}

如果你愿意 ,你也可以使用[CallerFilePath]和。[CallerLineNumber]

文档可以在这里找到。

如果您需要比这些属性提供的更多信息,您可以获取调用者的程序集

public static class SomeLogger
{
    public static void Write(string message)
    {
         var callingAssembly = Assembly.GetCallingAssembly();
         //Grab whatever you need from callingAssembly and output it
    }
}

推荐阅读