Qui è la mia classe:Come deserializzare l'array nullo su null in C#?
public class Command
{
[XmlArray(IsNullable = true)]
public List<Parameter> To { get; set; }
}
Quando ho serializzare un oggetto di questa classe:
var s = new XmlSerializer(typeof(Command));
s.Serialize(Console.Out, new Command());
viene stampato come (sono omessi gli spazi dei nomi di intestazione XML e di default MS) previsto:
<Command><To xsi:nil="true" /></Command>
Quando ho preso questo xml e ho provato a deserializzarlo, mi sono staccato perché stampa sempre "Non null":
var t = s.Deserialize(...);
if (t.To == null)
Console.WriteLine("Null");
else
Console.WriteLine("Not null");
Come forzare il deserializzatore per rendere nullo il mio elenco, se è nullo in xml?
È davvero così importante per voi se non avete elenco o una lista vuota? –
Sì. Posso ovviare a questo caso con alcune bandiere, ovviamente, ma voglio sapere se esiste una buona soluzione standard. –
Evitare oggetti nulli di solito è una buona cosa (meno incline agli errori, non è necessario verificare la presenza di null su tutto il codice ecc.). L'uso di una bandiera indicherebbe chiaramente che cosa rappresenta esattamente quel valore nullo. – Groo