我有 GUI 和命令行应用程序都使用的公共类
这个类被传递了一个 ReportError 函数引用,它在 GUI 和 CommandLine 上的作用不同。
在图形用户界面中:
public int GUIReportError(String ToLog)
{
MessageBox.Show(ToLog);
return 0;
}
在共同的类成员中:
readonly Func<string, int> ReportError;
在通用类构造函数中:
public CommonClass(Func<string, int> ReportErrorFunc)
{
ReportError=ReportErrorFunc;
}
到目前为止,一切都很简单,但我会将 [CallerMemberName] 属性集成到我的日志函数中
public int GUIReportError(String ToLog, [CallerMemberName] string CallingFunction="")
{
MessageBox.Show(ToLog, CallingFunction);
return 0;
}
所以我也更新了 Func 定义:
readonly Func<string, string?, int> ReportError;
注意 ? 告诉它是可选参数
但是当我调用这个 ReportError 函数时,我得到一个编译器错误如下: CS7036: There is no argument given 对应于 Func<string, string?,int> 所需的形参 'arg2'
如果有人已经遇到过这种问题,我将不胜感激。