Estoy tratando de encontrar una manera de cambiar el comportamiento de serialización de una propiedad.Reemplazando una propiedad con un atributo
Digamos que tengo una situación como esta:
[Serializable]
public class Record
{
public DateTime LastUpdated {get; set; }
// other useful properties ...
}
public class EmployeeRecord : Record
{
public string EmployeeName {get; set; }
// other useful properties ...
}
Ahora quiero serializar EmployeeRecord. No quiero serializar la propiedad LastUpdated de la clase Record. (Sin embargo, quiero que LastUpdated sea serializado cuando serializo Record).
principio traté de ocultar la propiedad LastUpdated mediante el uso de la palabra clave nueva y luego añadir el atributo XmlIgnore:
public class EmployeeRecord : Record
{
public string EmployeeName {get; set; }
[XmlIgnore]
public new DateTime LastUpdated {get; set; }
// other useful properties ...
}
Pero eso no funcionó. Luego he intentado hacer la base LastUpdated virtual y anulando, manteniendo el atributo:
[Serializable]
public class Record
{
public virtual DateTime LastUpdated {get; set; }
// other useful properties ...
}
public class EmployeeRecord : Record
{
public string EmployeeName {get; set; }
[XmlIgnore]
public override DateTime LastUpdated {get; set; }
// other useful properties ...
}
Esto no funcionó bien. En ambos intentos, LastUpdated ignoró el atributo XmlIgnore y felizmente se dedicó a la serialización.
¿Hay alguna manera de hacer que lo que intento hacer ocurra?
¿Cómo lo serializas? Porque si usas la serialización binaria, el atributo XmlIgnore no servirá de mucho. –
Estoy usando XmlSerializer –
Utilizaría el atributo NonSerialized para la serialización binaria. – snarf