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
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é. –