C# 如何在LINQPad中使用CallerMemberName?

C# 如何在LINQPad中使用CallerMemberName?,c#,linqpad,c#-5.0,C#,Linqpad,C# 5.0,所以LINQPad说它支持C#5.0中的所有东西,但我无法让CallerMemberName工作 void Main() { GetMethodName().Dump(); } public string GetMethodName([CallerMemberName] string memberName = "") { return memberName; } 错误:找不到类型或命名空间名称“CallerMemberName”(按F4添加using指令或程序集引用) 找不到

所以LINQPad说它支持C#5.0中的所有东西,但我无法让CallerMemberName工作

void Main()
{
    GetMethodName().Dump();
}

public string GetMethodName([CallerMemberName] string memberName = "")
{
    return memberName;
}
错误:找不到类型或命名空间名称“CallerMemberName”(按F4添加using指令或程序集引用)

找不到类型或命名空间名称“CallerMemberNameAttribute”(是否缺少using指令或程序集引用?)

我尝试为CallerMemberName所在的名称空间添加一行
,但这当然不起作用,因为LINQPad假定您输入的代码位于某个秘密隐藏类的内部,而您不能使用
放在类的内部。因此,我尝试键入CallerMemberName的完整命名空间:
公共字符串GetMethodName([System.Runtime.CompilerServices.CallerMemberName]string memberName=“”)
,但这仍然不起作用

错误:命名空间“System.Runtime.CompilerServices”中不存在类型或命名空间名称“CallerMemberName”


命名空间“System.Runtime.CompilerServices”中不存在类型或命名空间名称“CallerMemberNameAttribute”

首先,错误消息明确指出,要使用添加
,需要按F4并将其添加到显示的对话框中


但是你的第二个版本应该可以用,对我来说很好。也许它不适合您,因为您实际上没有安装C#5.0编译器。您是否安装了.Net 4.5(包括更新的编译器)?

如果我将
System.Runtime.CompilerServices
添加到LINQPad中的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有一个单独的版本。

我当然有。我一直在visual studio中使用CallerMemberName。我只是试着在LINQPad中做,给工作中的人一个简单的例子,说明它是如何工作的,只是我无法让它工作。