在 .NET 4.0 中使用 .NET 4.5 中新增的特性(CallerMemberNameAttribute/CallerFilePathAttribute/CallerLineNumberAttribute)
2024-08-28 11:59:02
介绍
标题中所说的三个特性 CallerMemberNameAttribute / CallerFilePathAttribute / CallerLineNumberAttribute 我们统称为调用者信息特性,正常情况下在 .NET Framework 4.0 中是无法使用的。因为这三个特性是 .NET Framework 4.5 中新增的。然而这三个特性的作用只是请求编译器在编译过程中进行代码的转换。
使用示例
static void Main( string[] args )
{
var productInfo = new ProductInfo(); productInfo.Name = "lumia"; productInfo.PropertyChanged(); Console.ReadKey( true );
}
} public class ProductInfo
{
private string _name; public string Name
{
get { return this._name; }
set
{
this._name = value;
this.PropertyChanged();
}
} public void PropertyChanged([CallerMemberName]string name = "", [CallerLineNumber]int line = , [CallerFilePath]string file = "")
{
Console.WriteLine("------------------------------------------------");
Console.WriteLine($"Name : {name}, \nLine : {line}, \nPath : {file}");
}
}
注意上面标为橘红色的语句。运行时将自动填充这三个可选参数的值。开发过 WPF 的同学都知道这是多么的方便,不用显示指定参数名称。然而入我上面所说他不能在 .NET Framework 4.0 中使用,不过还好有办法。很简单,我们只需要自己定义这三个特性就可以了,代码如下。
namespace System.Runtime.CompilerServices
{
[AttributeUsage(AttributeTargets.Parameter, Inherited = false)]
public class CallerMemberNameAttribute : Attribute
{ } [AttributeUsage(AttributeTargets.Parameter, Inherited = false )]
public class CallerFilePathAttribute : Attribute
{ } [AttributeUsage(AttributeTargets.Parameter, Inherited = false )]
public class CallerLineNumberAttribute : Attribute
{ }
}
没有什么参数和成员在这三个特性里面。但要注意命名空间一定要与上面的一样。
最新文章
- python之初级学习
- 《TCP/IP详解卷1:协议》第1章 概述-读书笔记
- HTML学习之Web存储(五)
- Arduino101学习笔记(二)—— 一些注意的语法点
- js的小效果-图片放大镜效果
- 《驾驭Core Data》 第一章 Core Data概述
- Collections的排序之一(Java)
- (六)C语言之typedef详解
- 【转】Tomcat配置文件入门
- java内存模型7-处理器内存模型
- Codefoces 723B Text Document Analysis
- h5的input的required使用中遇到的问题
- Linux Debugging(六): 动态库注入、ltrace、strace、Valgrind
- CVE-2018-19386:SolarWinds数据库性能分析器中反射的XSS
- Qt License 解读
- CSS3新增特性及知识学习线路
- Javascript高级编程学习笔记(52)—— DOM2和DOM3(4)元素大小
- Visual Studio 产品密钥
- PAT A1124 Raffle for Weibo Followers (20 分)——数学题
- OOM之类、对象、实例、实体之辨析