2012-07-30 2 views
1

J'essaye de désérialiser un Nullable<bool> de mon fichier XML. Mon attente était qu'un XMLAttribute qui n'a pas été trouvé dans mon XMLElement est null et s'il est trouvé, il sera true ou false. Idem pour la sérialisation. Ma variable sera écrite si elle n'est pas nulle.Comment désérialiser Nullable <bool>?

De toute façon, chaque fois que j'essaye de désérialiser mon XML, un InvalidOperationException sera lancé.

Ma classe ressemble à ceci

[XMLArray("Users")] 
public class User 
{ 
    [XMLAttribute("copy")] 
    public bool? copy; 
} 

Toutes les idées?

+1

Jetez un oeil à cette approche, la réponse à cette question: http://stackoverflow.com/questions/1295697/deserializing-empty-xml-attribute-value-into-nullable-int-property-using-xmlseri It En gros, enveloppe une propriété autour de la variable nullable et sérialise/désérialise celle-ci. Ignore la propriété bool de la sérialisation. – lahsrah

+3

Vous pouvez utiliser 'public bool ShouldSerializecopy() {return copy.HasValue;}' comme indiqué ici: http://stackoverflow.com/questions/244953/serialize-a-nullable-int –

+0

Merci beaucoup! – theknut

Répondre

3
[XMLArray("Users")] 
public class User 
{ 
    [XmlIgnore] 
    public bool? m_copy; 

    [XmlAttribute("copy")] 
    public string copy 
    { 
     get { return (m_copy.HasValue) ? m_copy.ToString() : null; } 
     set { m_copy = !string.IsNullOrEmpty(value) ? bool.Parse(value) : default(bool?); } 
    } 
} 

J'ai obtenu la solution du answer à un poste lié par SyLON. Merci beaucoup!

Questions connexes