[ Foro de C# ]

Evitar serializar int o double inicializado en 0 y datetime inicializado como nuevo

28-Jan-2014 20:02
Jose Antonio Torres Espinoza
1 Respuestas

Tengo una clase que al momento de Serializarla me genera un XML con los atributos que indique me serializara como atributos, el problema que tengo es que no debo serializar los atributos de tipo datetime, int o double que no se les asigno algun valor, pero siempre me los serializa. ¿Como puedo evitar que aparezcan en el XML?


[GeneratedCodeAttribute("xsd", "4.0.30319.1")]
[SerializableAttribute()]
[DebuggerStepThroughAttribute()]
[DesignerCategoryAttribute("code")]
[XmlTypeAttribute(AnonymousType = true, Namespace = "http://www......")]
[XmlRootAttribute(Namespace = "http://www.......", IsNullable = false)]
[ClassInterface(ClassInterfaceType.AutoDual)]
public class factura()
{
    private string _serie;
    private DateTime _fecha;
    private double _descuento;

    [XmlAttribute]
    public string serie { get { return _serie; } set { _serie = value; } }

    [XmlAttribute()]
    public DateTime FechaFolioFiscalOrig { get { return _fechaFolioFiscalOrig; } set { _fechaFolioFiscalOrig = value; } }

    [XmlAttribute]
    public double descuento { get { return _descuento; } set { _descuento = value; } }
}



28-Jan-2014 23:33
Nacho Cabanes (+83)

Por una parte, si serializas un objeto, se guardarán todos sus atributos. Es lo normal y el comportamiento deseable.

Por otra parte, siendo estrictos, sí están inicializados, por ser atributos. Los atributos se inicializan automáticamente de C# (los números toman valor 0, los booleanos toman valor "false", las cadenas serán cadenas vacías, etc), cosa que no ocurre con las variables locales (pero insisto, sí con los atributos).






(No se puede continuar esta discusión porque tiene más de dos meses de antigüedad. Si tienes dudas parecidas, abre un nuevo hilo.)