2016-09-29 1 views
2

J'ai un fichier de configuration qui contient du code XML comme ceci:C# XmlSerializer: Deserialize valeur GUID vide à partir du fichier XML

<XmlParameter Title="Analysis"> 
    <ProcedureName>XmlParameterAnalysisGetFirst</ProcedureName> 
    <ProcedureGroupId/> 
    <Returns>Table</Returns> 
    <Params> 
     <Param OrderKey="0" Name="xmlParameters">%xmlParameters%</Param> 
    </Params> 
</XmlParameter> 

J'utilise la classe XmlSerializer pour désérialiser le fichier lors de l'exécution dans un objet de type XmlParameter:

public class XmlParameter { 
    [XmlAttribute] 
    public string Title { get; set; } 

    public string ProcedureName { get; set; } 

    [XmlElement(IsNullable=true)] 
    public Guid? ProcedureGroupId { get; set; } 

    public string Returns { get; set; } 

    public List<XmlCLRParam> Params { get; set; } 
} 

Mais lorsque je tente de désérialiser le fichier avec ce bloc de code:

var deserializer = new XmlSerializer(typeof(XmlParameter); 
var reader = new StreamReader(this.FilePath); 
var obj = deserializer.Deserialize(reader); 

je reçois un System.InvalidOperationException:

Erreur dans le document XML. ---> Sytem.Format.Exception: format de guide inconnu.

Ma question est de savoir s'il y a un moyen de désérialiser nullable valeurs GUID du fichier XML

+1

Pour simplifier votre problème, n'utilisez pas un Guid nullable, utilisez plutôt Guid.Empty. Cela équivaut à 0000-000 ... ce qui n'est pas un Guid valide donc c'est bien d'être vérifié. –

Répondre

3

Nullable signifie que le champ POCO va obtenir une référence null s'il n'y a pas dans le fichier xml ...

vous avez votre xml mal formaté: supprimer ce:

< ProcedureGroupId />