4.5"中的CallerMemberName属性是否能够伪造"?

Jer*_*all 26 .net wpf .net-4.5

所以.NET 4.5引入了CallerMemberNameAttribute,对于任何使用WPF并实现的人来说,这似乎是天赐之物INotifyPropertyChanged- 我的问题是:4.5 5.0编译器本质上是否绑定/支持该属性,还是更多的环境语法糖助手,就像人们可以通过声明ExtensionAttribute自己的神奇,打开LINQ语法来伪造Visual Studio一样?

编辑:(对不起Jon!)我想我是否可以CallerMemberNameAttribute通过在适当的命名空间中重新声明属性来"启用" .NET 4.0中的功能,就像在.NET中"启用"LINQ查询语法一样2.0通过适当的ExtensionAttribute类声明.我强烈的怀疑是不,自然......

换句话说:我想知道如果CallerMemberName不升级到.NET 4.5/5,我是否可以从中受益

希望这更清楚......

NinjaEdit#2:叹息......版本编号惯例令人困惑!

Jul*_*ain 50

是的,就像你说的那样,你可以使用LINQ和.NET 2.我在使用VS2012编译器的.NET 4.0项目中使用以下成功:

namespace System.Runtime.CompilerServices {

    [AttributeUsage(AttributeTargets.Parameter, AllowMultiple = false, Inherited = true)]
    public sealed class CallerMemberNameAttribute : Attribute {
    }

}
Run Code Online (Sandbox Code Playgroud)

非常小心,项目中的每个人都在使用VS2012,否则他们会得到无声的错误,因为CallerMemberNameAttribute没有做任何事情,null并作为参数默认传递.

编辑2013-06-28:考虑安装Microsoft.Bcl NuGet包,它CallerMemberNameAttribute为.NET 4和Silverlight 提供(以及.NET 4.5中的一些其他类),而不是手动执行.