无法将 System.Collections.Hashtable 转换为 System.Collections.Gene



我正在使用企业库 5.0,实际上是日志记录块。在某些情况下,如果与远程端点的连接不成功,我会处理以下异常:

Public Function Connect(ByVal sender As Socket) As Integer
    Dim result As Integer
    result = -1
    Try
        ' Connect the socket to the remote endpoint.
        sender.Connect(remoteEP)
        Logger.Write("Socket connected to remote endpoint {0}", _
                     sender.RemoteEndPoint.ToString())
        result = 0
    Catch ... another exception
    Catch ... another exception
    Catch ex As System.Net.Sockets.SocketException
        Using New Tracer(Common.LOGGING_SOCKETCONNECTIONERROR)
            Dim contextInfo As IDictionary = New Hashtable()
            contextInfo.Add("Additional Info (Stack Trace)", ex.StackTrace)
            Dim provider As DebugInformationProvider = New DebugInformationProvider()
            provider.PopulateDictionary(contextInfo)
            Dim logEntry As LogEntry = New LogEntry()
            logEntry.Categories.Add(Common.LOGGING_CRITICAL_ERRORS_CATEGORY)
            logEntry.Message = String.Format("An error occurred when attempting to access the socket: {0}", ex.Message)
            logEntry.ExtendedProperties = contextInfo
            Logger.Write(logEntry)
        End Using
  End Try
  Return result
End Function

当触发上述异常时,我在行中出现转换错误:

provider.PopulateDictionary(contextInfo)

转换错误如下:

System.InvalidCastException was unhandled
  Message="Unable to cast object of type 'System.Collections.Hashtable' to type 'System.Collections.Generic.IDictionary`2[System.String,System.Object]'."

我做错了什么?

更改:

Dim contextInfo As IDictionary = New Hashtable()

由:

Dim contextInfo As IDictionary = New Dictionary(Of String, Object)

解决了问题。

相关内容

最新更新