一、概述
C#5.0提供了一种新功能,可以利用特性和可选参数获得调用者的信息。这些特性信息包括CallerLineNumber、CallerFilePath和CallerMemberName。
二、Demo
using System; using System.Runtime.CompilerServices; namespace ExceptionDemo { class Program { public void Log(string message, [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); Console.WriteLine((name == null) ? "No member name" : name); Console.WriteLine(message); Console.WriteLine(); } private int test; public int Test { get { return test; } set { test = value; this.Log($"Test is set to {value}"); } } static void Main(string[] args) { Program p = new Program(); p.Log("A"); p.Test = 3; Action<string> ac = (string msg) => { p.Log(msg); }; ac("B"); } } }
运行结果如下: