eine Erweiterung Methode wie folgt gegeben:Wie kann ich das __Canon-Problem in generischen Exception-Handlern umgehen?
Public Sub RehydrateTo(Of T As New)(ByVal input As String, ByRef output As T)
Dim ms As MemoryStream = MsFromString(input)
Dim f As New DataContractSerializer(GetType(T))
Try
output = CType(f.ReadObject(ms), T)
Catch ex As SerializationException
output = New T
Dim ild As ILegacyDeserializer = TryCast(output, ILegacyDeserializer)
If Not ild Is Nothing Then
' ... you get the idea
End If
End Try
End Sub
und eine Art MyCollection, die von ObservableCollection (Of V) erbt, finden wir, dass Aufruf someString.RehydrateTo (instanceOfMyCollection) in dem Exception-Handler fehlschlagen kann. Das Problem besteht darin, dass GetType (T) nicht immer "MyCollection" auswertet, während es im Ausnahmehandler "__Canon" ergibt.
(System .__ Canon eine Art CLR Magie ist, die eine kanonische Instanziierung einer generischen Mittel)
Wie können wir dieses Problem umgehen?
Ich bin ein bisschen angekreuzt, dass das unten geändert wurde. Habe ich hier etwas falsch gemacht? –
weiß ich nicht, aber ich habe Sie gebeten, es wieder zu holen. Wahrscheinlich jemand mit der Nase aus dem einen oder anderen Grund. Ich habe jemanden, der meine Fragen/Antworten zwei Mal am Tag, zweimal am Tag ohne Zweifel ablehnt. Sie machen es seit fast einer Woche und jeden zweiten Tag werden die Downvotes von SOs "Missbrauchsdetektor-Ding" ausgelöscht. Nervig und gleichzeitig amüsant – Rob