2011-08-03 17 views
5

Mi documento xml tiene un elemento que puede contener varios elementos secundarios. En mi clase, declaro la propiedad como:Deserialización de XML: Deserializar el elemento faltante en el valor de propiedad nulo

[XmlArray("files", IsNullable = true)] 
[XmlArrayItem("file", IsNullable = false)] 
public List<File> Files { get; set; } 

Durante la deserialización, si el elemento no se encuentra <files>, quiero la propiedad de archivos a ser nula . Sin embargo, lo que ocurre es que Files se deserializa en un objeto List vacío. ¿Cómo lo evito?

+0

Quiero decir, si falta el elemento , .... – superkinhluan

Respuesta

3

Una opción que consigue que es la encapsulación de la lista:

public class Foo 
{ 
    [XmlElement("files", IsNullable = true)] 
    public FooFiles Files { get; set; } 

} 
public class FooFiles 
{ 
    [XmlElement("file", IsNullable = false)] 
    public List<File> Files { get; set; } 
} 

Aquí, Foo.Files habrá null si no hay ningún elemento <files/>.

+0

Gracias. ¿Hay alguna otra manera que puede evitar la creación de clase adicional. – superkinhluan

+0

@superkinhluan - no tan lejos como sé; como puede ver, la lista se crea con entusiasmo –

Cuestiones relacionadas