新的惰性初始化

New lazy initialization

正在尝试使用 NLog 创建日志记录助手 class。但是在创建 属性.

时出现以下错误

Error BC30518 Overload resolution failed because no accessible 'New' can be called with these arguments

Private Shared ReadOnly LoggingMap As New Lazy(Of Dictionary(Of TraceLevel, Action(Of String)))(Function() New Dictionary(Of TraceLevel, Action(Of String))() From {
            {TraceLevel.Info, ClassLogger.Info},
            {TraceLevel.Debug, ClassLogger.Debug},
            {TraceLevel.[Error], ClassLogger.[Error]},
            {TraceLevel.Fatal, ClassLogger.Fatal},
            {TraceLevel.Warn, ClassLogger.Warn}
})

我希望它能按如下方式使用。

''' <summary>
''' Get property for Logger
''' </summary>
Private ReadOnly Property Logger() As Dictionary(Of TraceLevel, Action(Of String))
    Get
        Return LoggingMap.Value
    End Get
End Property

找到答案谢谢:

    Private Shared ReadOnly LoggingMap As New Lazy(Of Dictionary(Of TraceLevel, Action(Of String))) _
(Function() New Dictionary(Of TraceLevel, Action(Of String)) From
            {{TraceLevel.Info, AddressOf ClassLogger.Info},
            {TraceLevel.Debug, AddressOf ClassLogger.Debug},
            {TraceLevel.Error, AddressOf ClassLogger.Error},
            {TraceLevel.Fatal, AddressOf ClassLogger.Fatal},
            {TraceLevel.Warn, AddressOf ClassLogger.Warn}
        })