首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Func委托中使用[CallerMemberName]属性

在Func委托中使用[CallerMemberName]属性
EN

Stack Overflow用户
提问于 2020-08-03 12:41:43
回答 1查看 229关注 0票数 0

我有一个公共类,它由GUI和CommandLine应用程序使用。

这个类被传递给一个ReportError函数引用,它在GUI和CommandLine上的作用不同。

在GUI中:

代码语言:javascript
复制
 public int GUIReportError(String ToLog)
    {
        MessageBox.Show(ToLog);
        return 0;
    }

在普通班级成员中:

代码语言:javascript
复制
readonly Func<string, int> ReportError;

在公共类构造器中:

代码语言:javascript
复制
public CommonClass(Func<string, int> ReportErrorFunc)
{
   ReportError=ReportErrorFunc;
}

到目前为止,一切都很简单,但我会将CallerMemberName属性集成到日志函数中。

代码语言:javascript
复制
public int GUIReportError(String ToLog, [CallerMemberName] string CallingFunction="")
        {
            MessageBox.Show(ToLog, CallingFunction);
            return 0;
        }

因此,我也更新了Func的定义:

代码语言:javascript
复制
 readonly Func<string,  string?, int> ReportError;

注意到?告诉它是可选参数

但是当我调用这个ReportError函数时,我得到一个编译器错误如下:CS7036:没有给定的与Func所需的形式参数'arg2‘相对应的参数。

如果有人已经经历过这样的问题,我会非常感激的。

EN

回答 1

Stack Overflow用户

发布于 2020-08-03 13:25:12

是的,解决办法就在这里。

公共类声明一个ReportError函数,其中包含CallerMemberName作为可选参数。

然后,该函数调用传递两个字符串的委托函数,而不必处理选项。

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

https://stackoverflow.com/questions/63229644

复制
相关文章

相似问题

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