所以LINQPad说它支持C# 5.0中的所有东西,但是我不能让CallerMemberName工作。
void Main()
{
GetMethodName().Dump();
}
public string GetMethodName([CallerMemberName] string memberName = "")
{
return memberName;
}错误:找不到类型或命名空间名称'CallerMemberName‘(按F4添加using指令或程序集引用)
找不到类型或命名空间名称“CallerMemberNameAttribute”(是否缺少using指令或程序集引用?)
我尝试为CallerMemberName所在的名称空间添加一个using行,但这当然行不通,因为LINQPad假定您输入的代码位于某个秘密隐藏类中,并且您不能将using放在类中。因此,我尝试输入CallerMemberName:public string GetMethodName([System.Runtime.CompilerServices.CallerMemberName] string memberName = "")的完整名称空间,但仍然不起作用。
错误:命名空间'System.Runtime.CompilerServices‘中不存在类型或命名空间名称'CallerMemberName’
命名空间“System.Runtime.CompilerServices”中不存在类型或命名空间名称“CallerMemberNameAttribute”
发布于 2012-11-01 04:23:21
首先,错误消息明确指出,要添加using,需要按F4键并将其添加到显示的对话框中。
但是你的第二个版本应该可以工作,它对我来说工作得很好。也许它对您不起作用,因为您实际上没有安装C# 5.0编译器。您是否安装了.Net 4.5 (包括更新的编译器)?
发布于 2013-06-07 00:54:56
如果我在LINQPad中将System.Runtime.CompilerServices添加到我的using指令中,这对我是有效的:
public void Method1(object someArgument, object someOtherArgument,
[CallerMemberName] string callerMemberName = null,
[CallerFilePath] string callerFilePath = null,
[CallerLineNumber] int callerLineNumber = 0)
{
string.Format("Called with {0}, {1} from method {2} in file {3} at line number {4}",
someArgument, someOtherArgument,
callerMemberName, callerFilePath, callerLineNumber)
.Dump();
}确保您使用的是当前版本的LINQPad。在过去,.NET < 4有一个单独的版本。
https://stackoverflow.com/questions/13161211
复制相似问题