我有以下 VB.NET 代码:
Private _retryMessages as Dictionary(Of Type, List(Of Object))
Private Sub RetryMessage(Of T)(message as T)
_retryMessages(GetType(T)).Add(message)
End Sub
Private Sub Publish(Of T)(message as T)
' code to publish message -- dependent on T
End Sub
我想创建一个新方法,它将遍历字典并调用Publish
每条消息:
Private Sub AttemptRetryMessages()
For Each messageType In _retryMessages.Keys
messages = _retryMessages(messageType)
' now I'm lost ...
'For Each message In messages
' Publish(message) '<-- System.Object
'Next
Next
End Sub
问题是我有类型,但我不确定如何调用Publish
为泛型提供正确的类型。如果我只是按原样调用它,那么将T
被解释为System.Object
.
我完全控制了代码,所以如果有更好的方法来解决这个问题,我愿意接受。目标是我们可以有几十种类型的消息,我只是希望能够将它们排队,以防发送失败。
谢谢!