INotifyPropertyChanged 接口 CallerMemberName属性

2016-07-24

调用方信息

使用调用方信息属性,可以获取关于调用方的信息传递给方法。 可以获取源代码、行号在源代码和调用方的成员名称的文件路径。 此信息用于跟踪,调试和创建诊断工具非常有用。

若要获取此信息,则使用适用于可选参数,每个都有一个默认的属性。 下表列出了 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:\Users\username\Documents\Visual Studio 2012\Projects\CallerInfoCS\CallerInfoCS\Form1.cs
24 //  source line number: 31

备注

必须为每个可选参数指定一个显式默认值。 不能将调用方信息特性应用于未指定为选项的参数。

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

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

成员名称

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

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

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


调用发生中


成员名称结果


方法、属性或事件


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


构造函数


字符串 “.ctor”


静态构造函数


字符串 “.cctor”


析构函数


该字符串 “Finalize”


用户定义的运算符或转换


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


特性构造函数


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


不包含的成员

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


可选参数的默认值。

时间: 2024-10-09 04:27:49

INotifyPropertyChanged 接口 CallerMemberName属性的相关文章

INotifyPropertyChanged 接口

2016-07-24 INotifyPropertyChanged 接口 用于向客户端(通常是执行绑定的客户端)发出某一属性值已更改的通知. 例如,考虑一个带有名为 FirstName 属性的 Person 对象.若要提供一般性属性更改通知,则 Person 类型实现 INotifyPropertyChanged 接口并在 FirstName 更改时引发 PropertyChanged 事件. 若要在将客户端与数据源进行绑定时发出更改通知,则绑定类型应具有下列任一功能: 实现 INotifyPr

转载:WPF MVVM之INotifyPropertyChanged接口的几种实现方式

原文地址:http://www.cnblogs.com/xiwang/ 序言 借助WPF/Sliverlight强大的数据绑定功能,可以比实现比MFC,WinForm更加优雅轻松的数据绑定.但是在使用WPF/Silverlight绑定时,有件事情是很苦恼的:当ViewModel对象放生改变,需要通知UI.我们可以让VM对象实现INotifyPropertyChanged接口,通过事件来通知UI.但问题就出现这里…… 一,描述问题 情形:现在需要将一个Person对象的Name熟悉双向绑定到UI中

INotifyPropertyChanged接口的实现

何时实现INotifyPropertyChanged接口 官方解释:INotifyPropertyChanged  接口用于向客户端(通常是执行绑定的客户端)发出某一属性值已更改的通知.官方解释的很模糊,估计是个人看了都不知道到底什么时候需要实现INotifyPropertyChanged接口.小梦通过实际测试给出明确结论: 首先:OneTime模式:毫无意义,因为它的绑定只有初始时候绑定一次,根本谈不上改变!自然也就谈不上实现INotifyPropertyChanged接口. 然后是OneWa

INotifyPropertyChanged接口的详细说明

在windows phone开发8.1:数据绑定中,我们了解了数据绑定的基本知识.今后几篇文章会继续深入了解数据绑定.今天我们来看在数据绑定中十分重要的INotifyPropertyChanged接口的实现. 何时实现INotifyPropertyChanged接口 官方解释:INotifyPropertyChanged  接口用于向客户端(通常是执行绑定的客户端)发出某一属性值已更改的通知.官方解释的很模糊,估计是个人看了都不知道到底什么时候需要实现INotifyPropertyChanged

【.NET深呼吸】INotifyPropertyChanged接口的真故事

无论是在流氓腾的问问社区,还是在黑度贴吧,或是“厕所等你”论坛上,曾经看到过不少朋友讨论INotifyPropertyChanged接口.不少朋友认为该接口是为双向绑定而使用的,那么,真实的情况是这样的吗? INotifyPropertyChanged接口位于System.ComponentModel命名空间,在该命名空间下还有另一个接口:INotifyPropertyChanging.INotifyPropertyChanging接口定义了PropertyChanging事件,应该在在属性值正

INotifyPropertyChanged接口的PropertyChanged 事件

INotifyPropertyChanged 接口用于向客户端(通常是执行绑定的客户端)发出某一属性值已更改的通知. 例如,考虑一个带有名为 FirstName 属性的 Person 对象. 若要提供一般性属性更改通知,则 Person 类型实现 INotifyPropertyChanged 接口并在 FirstName更改时引发 PropertyChanged 事件. 若要在将客户端与数据源进行绑定时发出更改通知,则绑定类型应具有下列任一功能: 实现 INotifyPropertyChange

[译]WPF MVVM 架构 Step By Step(5)(添加actions和INotifyPropertyChanged接口)

原文:[译]WPF MVVM 架构 Step By Step(5)(添加actions和INotifyPropertyChanged接口) 应用不只是包含textboxs和labels,还包含actions,如按钮和鼠标事件等.接下来我们加上一些像按钮这样的UI元素来看MVVM类怎么演变的.与之前的UI相比,这次我们加上一个"Cal Tax"按钮,当我们点击这个依赖于“sales amount”的按钮时,它会计算税费并显示在同窗口内. 为了完成所述的功能,我们先在Model类中添加一个

如何优雅的实现INotifyPropertyChanged接口

转自https://www.cnblogs.com/TianFang/p/6240933.html INotifyPropertyChanged接口在WPF或WinFrom程序中使用还是经常用到,常用于通知界面属性变更.标准写法如下: class NotifyObject : INotifyPropertyChanged { private int number; public int Number { get { return number; } set { number = value; O

WPF MVVM之INotifyPropertyChanged接口的几种实现方式(转)

原地址:https://www.cnblogs.com/xiwang/archive/2012/11/25/2787358.html 序言 借助WPF/Sliverlight强大的数据绑定功能,可以比实现比MFC,WinForm更加优雅轻松的数据绑定.但是在使用WPF/Silverlight绑定时,有件事情是很苦恼的:当ViewModel对象放生改变,需要通知UI.我们可以让VM对象实现INotifyPropertyChanged接口,通过事件来通知UI.但问题就出现这里…… 一,描述问题 情形