专栏首页.NET企业级解决方案应用与咨询INotifyPropertyChanged 接口 CallerMemberName属性

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:\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”。

特性构造函数

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

不包含的成员 (例如,程序集级别或特性应用于型)

可选参数的默认值。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • SQL反模式学习笔记6 支持可变属性【实体-属性-值】

    反模式:使用泛型属性表。这种设计成为实体-属性-值(EAV),也可叫做开放架构、名-值对。

    张传宁老师
  • C#开发BIMFACE系列35 服务端API之模型对比6:获取模型构建对比分类树

      BIMFACE平台提供了服务端“获取模型对比构件分类树”API。目录树返回结果以树状层级关系显示了增删改的构件信息,里面无法区分哪些构建是新增、修改或者删除...

    张传宁老师
  • C#2.0新增功能07 getter/setter 单独可访问性

      属性是一种成员,它提供灵活的机制来读取、写入或计算私有字段的值。 属性可用作公共数据成员,但它们实际上是称为访问器的特殊方法。 这使得可以轻松访问数据,还有...

    张传宁老师
  • F-Stack参加 DPDK中国技术峰会2017

    由 DPDK社区和英特尔主办的 DPDK中国技术峰会2017 于6月27日在上海举行,Intel、腾讯云、中兴、美团云、Panabit、太一星辰、Uni...

    F-Stack
  • 40.python 进程Process模块

    进程Process是对各种资源管理的集合,包含对各种资源的调用、内存的管理、网络接口的调用;一个进程Process可以包含多个子进程,启动一个进程的时候会自动创...

    猿说编程[Python和C]
  • 巴西世界杯官网遭黑客攻击陷入瘫痪

    世界杯比赛期间,抗议活动一直并未中断。之前,黑客组织威胁,将在赛事期间,对世界杯相关网站发动攻击,周五,黑客终于“兑现诺言”,攻破了巴西世界杯官网。当地时间周五...

    安恒信息
  • 距离产生美?k近邻算法python实现

    版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.n...

    红色石头
  • 智能合约:重入漏洞

    以太坊智能合约的特点之一是能够调用其他外部合约的代码,然而这些外部合约可能被攻击者劫持,迫使合约通过回退函数进一步执行代码,包括回调本身。在 gas 足够的情况...

    yichen
  • 超简单,带你学会多线程爬虫

    今天我们来介绍了一些爬虫的技术,实现基本的抓取需求。但是随着数据量变大时,我们之前的爬虫的效率或者说执行速度就会出现问题,之前我们都是一条数据爬取完成后才继续下...

    小小詹同学
  • linux系统编程之进程(一):进程基本概述

    一、什么是进程 从用户的角度来看进程是程序的一次执行过程。 从操作系统的核心来看,进程是操作系统分配的内存、CPU时间片等资源的基本单位。 进程是资源分配的...

    s1mba

扫码关注云+社区

领取腾讯云代金券