C#获取调用文件名,行号,方法

一.第一种方式
[DebuggerStepThrough] //跳过调式
        static void Print(string str,
                [CallerFilePath] string filePath = "",//文件路径
                [CallerLineNumber] int num = 0,       //行号
                [CallerMemberName] string name = "") //方法名
        {
            Console.WriteLine(str);
            Console.WriteLine("filePath {0}", filePath);
            Console.WriteLine("Line {0}", num);
            Console.WriteLine("Call from {0}", name);
        }

二.第二种方式:

1.获取行号

  /// <summary>
        /// Get line number of code dynamically
        /// </summary>
        /// <param name="skipFrames">number of frames to skip</param>
        /// <returns>line number of code after skipping frames</returns>
        public static int GetCodeLineNum(int skipFrames)
        {
            StackTrace st = new StackTrace(skipFrames, true);
            StackFrame fram = st.GetFrame(0);
            int lineNum = fram.GetFileLineNumber();
            return lineNum;
        }

2.获取文件路径

/// <summary>
        /// Get file name information of code dynamically
        /// </summary>
        /// <param name="skipFrames">number of frames to skip</param>
        /// <returns>file name information of code after skipping frames</returns>
        public static string GetCodeFileName(int skipFrames)
        {
            StackTrace st = new StackTrace(skipFrames, true);
            StackFrame fram = st.GetFrame(0);
            string source = fram.GetFileName();
            return source;
        }
posted @ 2022-08-08 01:49  后跳  阅读(577)  评论(0编辑  收藏  举报