Estoy en lo cierto en la comprensión del .NET XmlIgnoreAttribute, que dice:XmlIgnoreAttribute, solo se usa durante la serialización, ¿no durante la deserialización?
Encarga el método Serialize de la XmlSerializer no serializar el ámbito público o público de lectura/escritura de valor de la propiedad.
que:
- La propiedad será deserialized, si está presente en el archivo XML?
- ¿La propiedad no se serializará en un nuevo archivo XML?
La razón por la que estoy preguntando es que he reemplazado una propiedad en el archivo con una nueva con más opciones. La propiedad anterior era una propiedad booleana simple, y la nueva es una enumeración. Cambié la propiedad anterior para que convierta el valor de la nueva propiedad en un valor booleano, según lo que significaba la propiedad anterior antes de agregar la nueva, se han implementado tanto get como set.
Esto me permitió actualizar silenciosamente los archivos nuevos leyendo la propiedad anterior, que estableció la nueva propiedad, y luego de la serialización, se agregó la nueva propiedad.
Sin embargo, me gustaría eliminar la propiedad anterior de los nuevos archivos xml, por lo que me preguntaba qué pasaría si la etiqueté con [XmlIgnore]
, el archivo xml antiguo aún se deserializaría correctamente y leería esa propiedad del archivo, o ¿Sería ignorado por completo?
De lo contrario, ¿los siguientes cambios harían lo que yo quería?
[XmlAttribute("is-list")]
[DefaultValue(false)]
public bool IsList
{
get { return false; }
set {
if (value)
ListHandling = ListHandling.All;
}
}
Esto return false para todos los nuevos objetos, que serían ignorados ya que he especificado un valor predeterminado, y si está presente en un archivo antiguo, y se define como true, que cambiaría la propiedad ListHandling, que es el nuevo que es importante
Editar: Al probar, he verificado que ambos enfoques parecen hacer lo que quiero. Sin embargo, dejaré la pregunta, ya que aún me gustaría saber si el primer comportamiento mencionado anteriormente es solo un detalle de la implementación, o si la documentación se puede entender de esa manera.
Ok, gracias, entonces supongo que fue una suerte tonta que mi prueba mostró lo que hizo. Supongo que mi segunda implementación es la que quiero usar en ese momento. –
Si coloca el [XmlIgnore] en una propiedad subestimada/invalidada, el atributo se ignora y el valor se serializa y se deserializa. – Sven