C#基础知识---获取调用者信息

时间:2022-10-01 19:04:21

一、概述

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");

        }
    }
}

运行结果如下:
C#基础知识---获取调用者信息