• INotifyPropertyChanged 接口 CallerMemberName属性


    调用方信息

    使用调用方信息属性,可以获取关于调用方的信息传递给方法。 可以获取源代码、行号在源代码和调用方的成员名称的文件路径。 此信息用于跟踪,调试和创建诊断工具非常有用。若要获取此信息,则使用适用于可选参数,每个都有一个默认的属性。 下表列出了 System.Runtime.CompilerServices 命名空间中定义的调用方信息属性:

     

    特性

    说明

    类型

    CallerFilePathAttribute

    包含调用方源文件的完整路径。 这是文件路径在编译时。

    String

    CallerLineNumberAttribute

    在调用方法的源文件中的行号。

    Integer

    CallerMemberNameAttribute

    方法或调用方的属性名称。 请参见 Member Names 本主题后面

    String

     
     
     
     
     
     
     
     
     
     
     

    下面的示例演示如何使用调用方信息属性。 在每次调用 TraceMessage 方法,信息将替换为可选参数的参数的调用方。

     1 // using System.Runtime.CompilerServices
     2 // using System.Diagnostics;
     3 
     4 public void DoProcessing()
     5 {
     6     TraceMessage("Something happened.");
     7 }
     8 
     9 public void TraceMessage(string message,
    10         [CallerMemberName] string memberName = "",
    11         [CallerFilePath] string sourceFilePath = "",
    12         [CallerLineNumber] int sourceLineNumber = 0)
    13 {
    14     Trace.WriteLine("message: " + message);
    15     Trace.WriteLine("member name: " + memberName);
    16     Trace.WriteLine("source file path: " + sourceFilePath);
    17     Trace.WriteLine("source line number: " + sourceLineNumber);
    18 }
    19 
    20 // Sample Output:
    21 //  message: Something happened.
    22 //  member name: DoProcessing
    23 //  source file path: c:UsersusernameDocumentsVisual Studio 2012ProjectsCallerInfoCSCallerInfoCSForm1.cs
    24 //  source line number: 31
     
    备注
     
    必须为每个可选参数指定一个显式默认值。 不能将调用方信息特性应用于未指定为选项的参数。

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

    调用方信息值发出为文本到在编译时计算的 (IL)中间语言。 不同 StackTrace 属性的结果异常的,结果不影响的经过模糊处理的。

     

    成员名称

    可以使用 CallerMemberName 属性设置为来避免指定成员名称作为参数 String 到调用的方法。 通过使用这种方法,可以避免此问题 重命名重构 不更改 String 值。 此优势为以下任务特别有用:

    • 使用跟踪和诊断实例。

    • 实现 INotifyPropertyChanged 接口,在绑定数据时。 此接口允许对象的属性通知一个绑定控件属性已更改,因此,该控件可显示最新信息。 不 CallerMemberName 属性,必须指定属性名称为文本。

    以下图表显示返回的成员名称,当您使用 CallerMemberName 属性。

     

    调用发生中

    成员名称结果

    方法、属性或事件

    方法的名称,该属性,或者的事件调用为。

    构造函数

    字符串 “.ctor”

    静态构造函数

    字符串 “.cctor”

    析构函数

    该字符串 “Finalize”

    用户定义的运算符或转换

    生成的名称成员,例如, “op_Addition”。

    特性构造函数

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

    不包含的成员

    (例如,程序集级别或特性应用于型)

    可选参数的默认值。

     

     

     

  • 相关阅读:
    事件委托应用:在父控件中创建子控件,并接收值
    填充树节点
    JAVA Eclipse如何安装Swing
    JAVA Eclipse开发Android如何设置滚动条最大值最小值
    JAVA Eclipse开发Android如何让屏幕保持为竖直或水平状态
    JAVA Eclipse开发Android如何让超出界面的部分自动显示滚动条
    JAVA Eclipse开发Android程序如何自定义图标
    JAVA Eclipse开发Android程序会经常闪退是怎么回事
    JAVA Eclipse的Android文件结构是怎么样的
    JAVA Eclipse的Android的进程和生命周期是什么
  • 原文地址:https://www.cnblogs.com/SavionZhang/p/5701563.html
Copyright © 2020-2023  润新知