- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
因此,.NET 4.5 引入了 CallerMemberNameAttribute
,对于任何使用 WPF 并实现 INotifyPropertyChanged
的人来说,这似乎是天赐之物 - 我的问题是:属性是否本质上相关/由
4.5
5.0 编译器支持,或者它更像是环境的语法糖助手,就像人们可以通过声明自己的 ExtensionAttribute
来伪造 Visual Studio 一样,神奇地开启 LINQ 语法?
编辑:(对不起乔恩!)我想我是在问是否可以通过在正确的命名空间中重新声明属性来“启用”.NET 4.0 中的 CallerMemberNameAttribute 功能,就像可以在 .NET 4.0 中“启用”LINQ 查询语法一样。 NET 2.0 通过正确声明 ExtensionAttribute
类来实现。我强烈怀疑,当然不是……
换句话说:我想知道我是否可以在不升级到 .NET 4.5/5 的情况下从 CallerMemberName
的功能中受益
希望这更清楚......
NinjaEdit #2:叹息...版本编号约定令人困惑!
最佳答案
是的,您可以,正如您所说,就像您可以使用 LINQ 和 .NET 2 一样。我在 .NET 4.0 项目中使用 VS2012 编译器成功使用了以下内容:
namespace System.Runtime.CompilerServices {
[AttributeUsage(AttributeTargets.Parameter, AllowMultiple = false, Inherited = true)]
public sealed class CallerMemberNameAttribute : Attribute {
}
}
要非常小心项目中的每个人都使用 VS2012,否则他们会遇到无声错误,因为 CallerMemberNameAttribute
没有执行任何操作并且 null
作为参数默认值传递。
编辑 2013-06-28: 考虑安装 Microsoft.Bcl NuGet 包,为 .NET 4 和 Silverlight 提供 CallerMemberNameAttribute(以及 .NET 4.5 中的其他一些类),而不是手动执行。
关于.net - 4.5 中的 CallerMemberName 属性是 "able to be faked"吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13381917/
我正在使用 C#(.NET 4.5、VS 2013)生成一个序列化程序,我正在使用一个属性来控制序列化元数据,例如用于存储成员以供读取和写入的名称。因为我不想每次都写出成员名称作为属性的参数,所以我尝
我有以下日志方法(用于单元测试项目): public static void WriteLogFile(T obj, [System.Runtime.CompilerServices.
我有一个面向 Windows Phone 7.1+ 和 Windows 应用商店应用程序(适用于 WinRT)的可移植库,它使用 .net 4.5 框架。 我想在其中使用新的 [CallerMembe
现在(C# 4.0),我们的日志记录方法看起来像 public void Log(string methodName, string messageFormat, params object[] me
我正在浏览大约 700K 行代码。大量的接口(interface)实现和DI使用。我试图找出从哪里调用特定方法,因此我尝试使用 [CallerMemberName]。 我在谷歌等上看到的所有例子都是这
使用CallerMemberName/CallerFilePathAttribute/CallerLineNumber属性如何影响应用程序的性能?这是在应用程序中编译的东西,还是相关反射的东西,还是其
我有一个接受dynamic 参数的方法,还有一个不同参数的[CallerMemberName]。只要动态对象也在参数中,就不会填充 [CallerMemberName] 参数。 这是 CallerMe
有没有办法在调用方方法中获取变量/参数的原始名称?在某种程度上,它就像 [CallerMemberName]属性,但对于变量/参数。 更新 2018.02: 这个问题与这些问题类似:1 , 2和 3
我正在尝试在我的新 WPF 4.5 CompositeWPF (Prism) 项目中实现日志记录功能。这需要我在我的代码中实现 ILoggerFacade。该接口(interface)只实现了1个方法
新的 C# 5.0 版本引入了一些东西来摆脱 INotifyPropertyChanged 实现中的“魔法字符串”,例如: OnPropertyChanged("CustomerName"); 现在可
我刚刚安装了 Visual Studio 2012,因此我可以利用更好的方法通过 Silverlight 实现 MVVM。 我想做的第一件事是开始使用 [CallerMemberName] 属性,这样
有什么区别以及对代码的影响? 关于性能和限制,什么更适合? 新属性: - [调用文件路径属性] - [CallerMemberName] - [来电号码] 现在它们在 .NET 4 中也可用(它很容易
有好文章推荐different ways for implementing INotifyPropertyChanged . 考虑以下基本实现: class BasicClass : INotifyP
我正在尝试实现与提升属性一起使用的 CallerMemberName。我试图在 vb 中执行此操作,但在 system.runtime.compilerservices 中找不到此接口(interfa
我在类的 INotifyPropertyChanged 实现中使用了 CallerMemberName 属性,如 MSDN 中所述如下: public event PropertyChange
快速背景:尝试创建一个方法,该方法将根据调用它的方法返回预定义的字符串。 (有点掩饰但足够接近)。 我打算使用 [ CallerMemberName ] 属性,但我的问题是: => 我是否需要将 Me
如何CallerMemberName实现了吗? 我明白它的作用 - 它允许我们在代码中保留魔法字符串 - 但它应该用于 nameof 吗?什么更高效? 有什么区别/CallerMemberName 究
我正在尝试通过 BCL 可移植包在 .NET 4.0 中使用 CallerMemberName 属性。它总是返回一个空字符串而不是成员名称。我做错了什么? public partial class F
因此,.NET 4.5 引入了 CallerMemberNameAttribute,对于任何使用 WPF 并实现 INotifyPropertyChanged 的人来说,这似乎是天赐之物 - 我的问题
我是一名优秀的程序员,十分优秀!