我有一个公共类,它由GUI和CommandLine应用程序使用。
这个类被传递给一个ReportError函数引用,它在GUI和CommandLine上的作用不同。
在GUI中:
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:没有给定的与Func所需的形式参数'arg2‘相对应的参数。
如果有人已经经历过这样的问题,我会非常感激的。
发布于 2020-08-03 13:25:12
是的,解决办法就在这里。
公共类声明一个ReportError函数,其中包含CallerMemberName作为可选参数。
然后,该函数调用传递两个字符串的委托函数,而不必处理选项。
https://stackoverflow.com/questions/63229644
复制相似问题