如何将 NLog 记录器作为可选参数传递

How do I pass an NLog logger as optional parameter

我正在使用引用一个库的代码,该库有一个可选的 NLog.Logger 作为参数(这个库的代码和这个方法定义已经丢失,所以我必须重新创建它)。下面的代码抱怨此消息: "Error 41 Constant expression is required." 我无法弄清楚如何使它工作,因为我试图定义一个 Const,以及只是将默认值设置为 null 但没有任何效果。如何创建 Logger 类型的选项参数?谢谢!

Dim objTraceLogDefault As Logger = LogManager.GetLogger("TraceFile")

Public Function MyFunction(Optional ByVal objTraceLog As Logger = 
objTraceLogDefault)

可选参数应该是常量,(例如数字、字符串或Nothing),因为编译器添加常量值会增加编译时间。

您可以将默认值设置为 Nothing 并检查正文中的 Nothing

Private Function MyFunction(ByVal Optional objTraceLog As Logger = Nothing)
    objTraceLog = If(objTraceLog, objTraceLogDefault)
End Function