【发布时间】:2013-09-21 08:45:20
【问题描述】:
我正在尝试通过 BCL 可移植包在 .NET 4.0 中使用 CallerMemberName 属性。它总是返回一个空字符串而不是成员名称。我做错了什么?
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
MessageBox.Show(new class2().CallMe);
}
}
public class class2
{
public string CallMe
{
get
{
return HelpMe();
}
}
private string HelpMe([CallerMemberName] string param = "")
{
return param;
}
}
【问题讨论】:
-
您使用的是哪个版本的编译器?此功能由编译器而非运行时实现。
-
如果这有帮助:C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC>csc /? Microsoft (R) Visual C# 编译器版本 4.0.30319.17929
-
如果编译器不支持它会导致编译器错误而不是空消息
-
无论如何 [CallerMemberName] 是在 4.5 中引入的,因此您将无法在 4.0 中使用它。测试 VS2012 目标 4.0 和 C# 5.0
-
Samuel - 这就是 Microsoft BCL Portability 的确切目的。能够在 4.0 中使用选定的 4.5 功能。 nuget.org/packages/Microsoft.Bcl
标签: c# .net .net-4.0 base-class-library callermembername