C# 如何在LINQPad中使用CallerMemberName?
所以LINQPad说它支持C#5.0中的所有东西,但我无法让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指令或程序集引用) 找不到
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中做,给工作中的人一个简单的例子,说明它是如何工作的,只是我无法让它工作。