调用方信息

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

 

特性

说明

类型

CallerFilePathAttribute

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

String

CallerLineNumberAttribute

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

Integer

CallerMemberNameAttribute

方法或调用方的属性名称。 请参见 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属性的更多相关文章

  1. 如何优雅的实现INotifyPropertyChanged接口

    INotifyPropertyChanged接口在WPF或WinFrom程序中使用还是经常用到,常用于通知界面属性变更.标准写法如下: class NotifyObject : INotifyProp ...

  2. INotifyPropertyChanged接口的PropertyChanged 事件

    INotifyPropertyChanged 接口用于向客户端(通常是执行绑定的客户端)发出某一属性值已更改的通知. 例如,考虑一个带有名为 FirstName 属性的 Person 对象. 若要提供 ...

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

    无论是在流氓腾的问问社区,还是在黑度贴吧,或是“厕所等你”论坛上,曾经看到过不少朋友讨论INotifyPropertyChanged接口.不少朋友认为该接口是为双向绑定而使用的,那么,真实的情况是这样 ...

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

    应用不只是包含textboxs和labels,还包含actions,如按钮和鼠标事件等.接下来我们加上一些像按钮这样的UI元素来看MVVM类怎么演变的.与之前的UI相比,这次我们加上一个"C ...

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

    原文地址:http://www.cnblogs.com/xiwang/ 序言 借助WPF/Sliverlight强大的数据绑定功能,可以比实现比MFC,WinForm更加优雅轻松的数据绑定.但是在使用 ...

  6. INotifyPropertyChanged 接口

    INotifyPropertyChanged 接口 用于向客户端(通常是执行绑定的客户端)发出某一属性值已更改的通知. 例如,考虑一个带有名为 FirstName 属性的 Person 对象.若要提供 ...

  7. 转载:如何优雅的实现INotifyPropertyChanged接口

    转载来源:http://www.cnblogs.com/TianFang/p/6240933.html 如何优雅的实现INotifyPropertyChanged接口 INotifyPropertyC ...

  8. INotifyPropertyChanged接口的实现

    何时实现INotifyPropertyChanged接口 官方解释:INotifyPropertyChanged  接口用于向客户端(通常是执行绑定的客户端)发出某一属性值已更改的通知.官方解释的很模 ...

  9. INotifyPropertyChanged接口的详细说明

    在windows phone开发8.1:数据绑定中,我们了解了数据绑定的基本知识.今后几篇文章会继续深入了解数据绑定.今天我们来看在数据绑定中十分重要的INotifyPropertyChanged接口 ...

随机推荐

  1. 第三篇--创建.gitignore文件

    小知识 ·  git add -A  提交所有变化 ·  git add -u  提交被修改(modified)和被删除(deleted)文件,不包括新文件(new) ·  git add .  提交 ...

  2. maven settings.xml--需要保存到用户/.m2文件夹下

    <?xml version="1.0" encoding="UTF-8"?> <!-- Licensed to the Apache Soft ...

  3. 微信小程序中-折线图

    echarts配置项太多了,还是一点点积累吧~~~~~ 当然前提条件还是得老老实实看echarts官方文档 :https://echarts.baidu.com/ 今天主要就介绍下我在工作中通过ech ...

  4. node-fs文件系统模块

    在node环境中所有与文件操作都是通过fs核心模块实现的.包括文件的创建.删除.查询以及读写和写入 在 fs 模块中,所有的方法都分为同步和异步两种实现,具有 sync 后缀的方法为同步方法,不具有 ...

  5. 基于jeesite的cms系统(一):开发环境搭建

    基于jeesite的cms系统系列,是对基于jeesite进行二次开发的博客模块开发过程的总结.涉及入门安装,二次开发,部署等 一.概况: JeeSite 是一个 Java 企业级快速开发平台,基于经 ...

  6. 技术栈(technology stack)

    technology stack 技术栈: 产品实现上依赖的软件基础组件, 包括 1. 系统 2. 中间件 3. 数据库 4. 应用软件 5. 开发语言 6. 框架 https://en.wikipe ...

  7. Eclipse——如何设置代码字体大小

    eclipse默认字体太小,1920*1080下分辨不清楚,接下来介绍一下如何更改默认字体大小: 1.window-Preferences 2.General-Appearance-Colors an ...

  8. 如何局部覆盖element-ui的默认样式

  9. ViewPager刷新原理

    ViewPager的数据是通过PageAdapter来装载的,刷新数据的方法有以下: 调用adapter.notifyDataSetChanged(); 刷新控件,但是要覆盖PagerAdapter的 ...

  10. day 22 - 2 面向对象练习

    练习一 在终端输出如下信息 小明,10岁,男,上山去砍柴小明,10岁,男,开车去东北小明,10岁,男,最爱大保健老李,90岁,男,上山去砍柴老李,90岁,男,开车去东北老李,90岁,男,最爱大保健老张 ...