C#特性应用-通过Log记录调用者信息

软件运行过程中,处理运行错误,Log的记录是不可或缺的。

在学习特性的过程中,发现了一个很方便的Log记录的方式。

语言环境C# 5.0以上。

System.Runtime.CompilerServices 命名空间下。

通过CallerLineNumber、CallerFilePath、CallerMemberName,特性可以获取调用者信息。

具体代码如下所示:

static void Main(string[] args)
{
   var p = new Program();
   p.Log();
   p.SomeProperty = 33;

   Action a = () => p.Log();
   a();

   Console.ReadLine();
}

private int someProperty;

public int SomeProperty
{

get { return someProperty; }

set
{
this.Log();
someProperty = value;
}
}


public void Log([CallerLineNumber]int line =-1,[CallerFilePath] string path =null,[CallerMemberName] string name = null)
{

Console.WriteLine((line<0)?"No Line": $"Line:{line}");
Console.WriteLine((path == null) ? "No File Path" : $"path:{path}");
Console.WriteLine((name == null) ? "No Member Name" : $"Name:{name}");
Console.WriteLine();
}

运行结果:

 

posted @ 2022-01-17 15:33  开心整一天  阅读(179)  评论(0)    收藏  举报