C#获取调用方信息-日志组件使用

来源:互联网 发布:mac 命令行复制文件夹 编辑:程序博客网 时间:2024/06/08 17:58

内容来自《ASP.NET网站开发与项目实战(第二版)》,清华大学出版社,张正礼,陈作聪,王坚宁编著


在日志组件中,需要记录方法调用信息。使用调用方信息属性,可以获取关于调用方的信息,调用信息包括:方法成员名称、源文件路径和行号这些信息可用于跟踪,调试和创建诊断工具非常有用。

注意需要引用System.Runtime.CompilerServices命名空间。

调用方信息属性:

CallerFilePath:包含调用方源文件的完整路径。

CallerLineNumber:调用方所在源文件的行号。

CallerMemberName:方法或调用方的属性名称。


在使用调用方信息的属性时,应注意:

必须为每个可选参数指定一个显示默认值;

不能将调用方信息属性应用于未指定为选项的参数;

调用方信息属性不会使用一个参数选项。相反,当参数省略时,它们影响传递的默认值。


可以使用CallerMemberName属性来避免指定成员名称作为String参数传递到调用的方法。通过使用这种方法,可以避免重命名重构而不更改String值的问题。针对以下问题是有效的:

使用跟踪和诊断实例;

在绑定数据时,实现INotifyPropertyChanged接口;

绑定控件的属性已更改,所以该控件可显示最新信息。但CallMemberName属性必须指定属性的名称为文本类型。


此外,不同类型方法返回值有所不同。

方法、属性或事件,返回调用的方法、属性或事件的名称;

构造函数,返回字符串“.ctor”;

静态构造函数,返回字符串“.cctor”;

析构函数,返回字符串“Finalize”;

用户定义的运算符或转换,返回字符串生成的成员名称,例如,“op_Addition”;

特性构造函数,特性所应用的成员,如果属性是成员中的任何元素(如参数、返回值或泛型类型参数),此结果是与组件关联的成员名称;

不包含的成员(如,程序集级别或特性应用于类型),可选参数的默认值。


        public static void Main(string[] args)        {            TraceMessage("获得调用方信息。");            Console.Read();        }        #region 获取调用方信息        public static void TraceMessage(string message, [CallerMemberName] string memberName = "",            [CallerFilePath] string sourceFilePath = "", [CallerLineNumber] int sourceLineNumber = 0)        {            Trace.WriteLine("信息内容:" + message);            Trace.WriteLine("调用方名称:"+memberName);            Trace.WriteLine("调用方源文件路径:"+sourceFilePath);            Trace.WriteLine("调用方在源文件的行号:" + sourceLineNumber);        }        #endregion

结果,在输出窗口。



原创粉丝点击