在4.5 CallerMemberName属性“能够被伪造”?(Is the CallerMembe

2019-06-21 04:00发布

所以.NET 4.5引入了CallerMemberNameAttribute ,这似乎是一个天赐良机,以人与WPF工作和执行INotifyPropertyChanged -我的问题是:是由4.5 5.0编译器支持固定绑定属性/,或者是通过多语法糖帮手环境,就像一个人能欺骗Visual Studio中通过声明ExtensionAttribute你自己的,神奇地打开LINQ语法?

编辑:(!对不起乔恩)我想我询问是否可以“使能”的的功能CallerMemberNameAttribute在.NET 4.0中通过正确的命名空间属性的重新声明,在很像一个可以“使能” LINQ查询语法。通过适当的声明NET 2.0 ExtensionAttribute类。 我强烈的怀疑是没有,自然...

把另一种方式:我想知道我是否可以从该功能中受益CallerMemberName不升级到.NET 4.5 / 5

希望这是更清晰......

NinjaEdit#2:唉...版本的编号方式被迷惑!

Answer 1:

是的,你可以说,就像你可以使用LINQ和.NET 2,如你所说。 我用与VS2012编译器成功的一个.NET 4.0的项目如下:

namespace System.Runtime.CompilerServices {

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

}

非常小心,大家对项目使用VS2012,否则他们会得到错误沉默,因为CallerMemberNameAttribute没有做任何事情, null被作为参数传递默认。

编辑2013年6月28日:考虑安装Microsoft.Bcl NuGet包提供CallerMemberNameAttribute为.NET 4和Silverlight(以及从.NET 4.5一些其它类),而不是手动地这样做。



文章来源: Is the CallerMemberName attribute in 4.5 “able to be faked”?