首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在LINQPad中使用CallerMemberName?

如何在LINQPad中使用CallerMemberName?
EN

Stack Overflow用户
提问于 2012-10-31 23:18:22
回答 2查看 2.2K关注 0票数 1

所以LINQPad说它支持C# 5.0中的所有东西,但是我不能让CallerMemberName工作。

代码语言:javascript
复制
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”

EN

回答 2

Stack Overflow用户

发布于 2012-11-01 04:23:21

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

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

票数 2
EN

Stack Overflow用户

发布于 2013-06-07 00:54:56

如果我在LINQPad中将System.Runtime.CompilerServices添加到我的using指令中,这对我是有效的:

代码语言:javascript
复制
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有一个单独的版本。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13161211

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档