Comment sérialiser une liste d'objets Exception (y compris les exceptions dérivées, par exemple FileNotFoundException) avec DataContractSerializer?DataContractSerializer et List (Of Exception)
Je reçois toujours une erreur sur le sérialiseur ne connaissant pas les types dans la liste, donc j'ai conçu une solution de contournement.
Il avait l'air quelque chose comme ceci:
Dim XmlSerializer As New DataContractSerializer(_
ExceptionsList.GetType(), ExceptionsList.Select(Function(i) i.GetType))
XmlSerializer.WriteObject(Stream, List)
Cela fonctionne. Je viens d'ajouter tous les différents types d'exception à la liste des types connus et cela fonctionne. Mais à propos de la désérialisation, je suis coincé. Le problème est que je ne connais pas les types d'exceptions stockées dans le fichier à l'avance.
Cela fonctionne merci, je me demande pourquoi vous ne pouvez pas faire cela avec le sérialiseur ordinaire. – prof23030
Parce que le sérialiseur régulier se contente de sérialiser au format XML interopérable. Vous devez lui dire quels types sont possibles, sinon il ne peut pas désérialiser. Le 'NetDataContractSerializer' contourne cela en ajoutant des métadonnées de type au XML. C'est aussi pourquoi vous ne pouvez pas l'utiliser pour communiquer avec un service ou un client non-NET. –
Je viens de découvrir que NetDataContractSerializer ne peut pas sérialiser en moyenne confiance (je suis sur l'hébergement partagé, si j'essaie de sérialiser je reçois une exception de sécurité), donc je suppose que je vais devoir trouver un autre moyen. – prof23030