J'essaie de trouver un moyen de changer le comportement de sérialisation d'une propriété.Redéfinition une propriété avec un attribut
Disons que j'ai une situation comme celle-ci:
[Serializable]
public class Record
{
public DateTime LastUpdated {get; set; }
// other useful properties ...
}
public class EmployeeRecord : Record
{
public string EmployeeName {get; set; }
// other useful properties ...
}
Maintenant, je veux sérialisation EmployeeRecord. Je ne veux pas que la propriété LastUpdated de la classe Record soit sérialisée. (Je veux que LastUpdated soit sérialisé lorsque je sérialise Record, cependant).
D'abord, j'essayé de cacher la propriété LastUpdated en utilisant le mot-clé nouveau, puis en ajoutant l'attribut XmlIgnore:
public class EmployeeRecord : Record
{
public string EmployeeName {get; set; }
[XmlIgnore]
public new DateTime LastUpdated {get; set; }
// other useful properties ...
}
Mais cela ne fonctionne pas. Ensuite, j'ai essayé de faire la base LastUpdated virtuelle il et en remplaçant, en gardant l'attribut:
[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 ...
}
Cela ne fonctionne pas non plus. Dans les deux tentatives, LastUpdated a ignoré l'attribut XmlIgnore et s'est contenté de son activité de sérialisation.
Y at-il un moyen de faire ce que je suis en train de faire arriver?
Comment procédez-vous à la sérialisation? Parce que si vous utilisez la sérialisation binaire, l'attribut XmlIgnore ne fera pas beaucoup de bien. –
J'utilise XmlSerializer –
Vous utiliseriez l'attribut NonSerialized pour la sérialisation binaire. – snarf