INotifyPropertyChanged 接口 CallerMemberName属性
调用方信息
使用调用方信息属性,可以获取关于调用方的信息传递给方法。 可以获取源代码、行号在源代码和调用方的成员名称的文件路径。 此信息用于跟踪,调试和创建诊断工具非常有用。若要获取此信息,则使用适用于可选参数,每个都有一个默认的属性。 下表列出了 System.Runtime.CompilerServices 命名空间中定义的调用方信息属性:
|
特性 |
说明 |
类型 |
|
包含调用方源文件的完整路径。 这是文件路径在编译时。 |
String |
|
|
在调用方法的源文件中的行号。 |
Integer |
|
|
方法或调用方的属性名称。 请参见 Member Names 本主题后面 |
String |
下面的示例演示如何使用调用方信息属性。 在每次调用 TraceMessage 方法,信息将替换为可选参数的参数的调用方。
// using System.Runtime.CompilerServices
// using System.Diagnostics; public void DoProcessing()
{
TraceMessage("Something happened.");
} public void TraceMessage(string message,
[CallerMemberName] string memberName = "",
[CallerFilePath] string sourceFilePath = "",
[CallerLineNumber] int sourceLineNumber = )
{
Trace.WriteLine("message: " + message);
Trace.WriteLine("member name: " + memberName);
Trace.WriteLine("source file path: " + sourceFilePath);
Trace.WriteLine("source line number: " + sourceLineNumber);
} // Sample Output:
// message: Something happened.
// member name: DoProcessing
// source file path: c:\Users\username\Documents\Visual Studio 2012\Projects\CallerInfoCS\CallerInfoCS\Form1.cs
// source line number: 31
调用方信息属性不会使一个参数选项。 相反,它们影响传递的默认值,当参数省略时。
调用方信息值发出为文本到在编译时计算的 (IL)中间语言。 不同 StackTrace 属性的结果异常的,结果不影响的经过模糊处理的。
可以使用 CallerMemberName 属性设置为来避免指定成员名称作为参数 String 到调用的方法。 通过使用这种方法,可以避免此问题 重命名重构 不更改 String 值。 此优势为以下任务特别有用:
使用跟踪和诊断实例。
实现 INotifyPropertyChanged 接口,在绑定数据时。 此接口允许对象的属性通知一个绑定控件属性已更改,因此,该控件可显示最新信息。 不 CallerMemberName 属性,必须指定属性名称为文本。
以下图表显示返回的成员名称,当您使用 CallerMemberName 属性。
|
调用发生中 |
成员名称结果 |
|---|---|
|
方法、属性或事件 |
方法的名称,该属性,或者的事件调用为。 |
|
构造函数 |
字符串 “.ctor” |
|
静态构造函数 |
字符串 “.cctor” |
|
析构函数 |
该字符串 “Finalize” |
|
用户定义的运算符或转换 |
生成的名称成员,例如, “op_Addition”。 |
|
特性构造函数 |
特性所应用的成员的名称。 如果属性是在成员中的任何元素 (如参数、返回值或泛型类型参数),此结果是与组件关联的成员的名称。 |
|
不包含的成员 (例如,程序集级别或特性应用于型) |
可选参数的默认值。 |
INotifyPropertyChanged 接口 CallerMemberName属性的更多相关文章
- 如何优雅的实现INotifyPropertyChanged接口
INotifyPropertyChanged接口在WPF或WinFrom程序中使用还是经常用到,常用于通知界面属性变更.标准写法如下: class NotifyObject : INotifyProp ...
- INotifyPropertyChanged接口的PropertyChanged 事件
INotifyPropertyChanged 接口用于向客户端(通常是执行绑定的客户端)发出某一属性值已更改的通知. 例如,考虑一个带有名为 FirstName 属性的 Person 对象. 若要提供 ...
- 【.NET深呼吸】INotifyPropertyChanged接口的真故事
无论是在流氓腾的问问社区,还是在黑度贴吧,或是“厕所等你”论坛上,曾经看到过不少朋友讨论INotifyPropertyChanged接口.不少朋友认为该接口是为双向绑定而使用的,那么,真实的情况是这样 ...
- [译]WPF MVVM 架构 Step By Step(5)(添加actions和INotifyPropertyChanged接口)
应用不只是包含textboxs和labels,还包含actions,如按钮和鼠标事件等.接下来我们加上一些像按钮这样的UI元素来看MVVM类怎么演变的.与之前的UI相比,这次我们加上一个"C ...
- 转载:WPF MVVM之INotifyPropertyChanged接口的几种实现方式
原文地址:http://www.cnblogs.com/xiwang/ 序言 借助WPF/Sliverlight强大的数据绑定功能,可以比实现比MFC,WinForm更加优雅轻松的数据绑定.但是在使用 ...
- INotifyPropertyChanged 接口
INotifyPropertyChanged 接口 用于向客户端(通常是执行绑定的客户端)发出某一属性值已更改的通知. 例如,考虑一个带有名为 FirstName 属性的 Person 对象.若要提供 ...
- 转载:如何优雅的实现INotifyPropertyChanged接口
转载来源:http://www.cnblogs.com/TianFang/p/6240933.html 如何优雅的实现INotifyPropertyChanged接口 INotifyPropertyC ...
- INotifyPropertyChanged接口的实现
何时实现INotifyPropertyChanged接口 官方解释:INotifyPropertyChanged 接口用于向客户端(通常是执行绑定的客户端)发出某一属性值已更改的通知.官方解释的很模 ...
- INotifyPropertyChanged接口的详细说明
在windows phone开发8.1:数据绑定中,我们了解了数据绑定的基本知识.今后几篇文章会继续深入了解数据绑定.今天我们来看在数据绑定中十分重要的INotifyPropertyChanged接口 ...
随机推荐
- Vue(三)指令
v-text:更新元素的text内容 <template> <div class="about"> <p v-text="msg" ...
- golang-flag的问题
如果选择-flag x 就是不支持布尔型
- Java单例模式之最优解分析【为何说是最优解】
代码如下 /** * * @ClassName: SingletionStaticInner * @Description: TODO[单例模式之最优解] * @author shundong.wu ...
- seq2seq
seq2seq: seq2seq就是将输入序列经过encoder-decoder变成目标序列. 如图所示,输入序列是 [A, B, C, <EOS>],输出序列是 [W, X, Y, Z ...
- Oracle时间函数
YYYY年 Q季度 MM月 month月 WW当年第几周 W本月第几周 DDD 当年第几天 DD当月第几天 D当周内第几天 DY当周内星期几 day当周内星期几 HH或HH12:12进制小时数 HH2 ...
- JGUI源码:prefixfree 这个库有时候会引起网页一直加载中(10)
如题,大部分情况下正常,但是chrome频繁刷新时,会出现这个问题,控制台没有异常信息.最终放弃使用引用第三方库prefixfree.min.js
- docker学习------swarm集群虚机异常关机,node状态为down
1.因昨天虚机异常关闭,导致今天上去查看时,node节点状态显示为down 2.查了些相关资料,找到处理办法(因我的节点没有任何数据,所以直接对其进行清除) docker swarm leave -- ...
- docker学习------记录centos7.5下docker安装更换国内源的处理过程
一.centos7.5下更换阿里源 1.装好centos7.5镜像,将yum源更换为阿里源 第一步:刚出的centos7.5是解析不到阿里的东西的,所以找了台centos7.4,下载一些包 (1) 下 ...
- python的copy模块理解
首先直接上结论: —–我们寻常意义的复制就是深复制,即将被复制对象完全再复制一遍作为独立的新个体单独存在.所以改变原有被复制对象不会对已经复制出来的新对象产生影响. —–而浅复制并不会产生一个独立的对 ...
- java中几种加/解密API
如基本的单向加密算法: BASE64 严格地说,属于编码格式,而非加密算法 MD5(Message Digest algorithm 5,信息摘要算法) SHA(Secure Hash Algorit ...