.net XmlSerializer sur les propriétés remplacées

J’ai une classe de base avec une propriété abstraite:

public abstract int ID {get;set;} 

maintenant, j’ai une sous-classe, qui est XmlSerialized. Donc, il a:

 [XmlElement("something")] public override int ID { get { //... } set { //... } } 

Je ne peux pas déplacer l’atsortingbut XmlElement vers la classe de base, car chaque sous-classe aura un nom d’élément xml différent.

Maintenant, quand je désérialise cette classe, l’erreur suivante apparaît:

Le membre ‘Subclass.ID’ masque le membre hérité ‘BaseClass.ID’, mais possède des atsortingbuts personnalisés différents.

Que puis-je faire?

La sérialisation et la désérialisation des types dérivés fonctionnent lorsque les propriétés remplacées ont les [XmlElement] et [XmlAtsortingbute] en ajoutant un atsortingbut [XmlIgnore] .

La classe de base peut être rendue abstraite de sorte qu’elle ne puisse jamais être instanciée et donc sérialisée ou désérialisée.

 [Serializable] public abstract class Base { [XmlIgnore] public abstract Int32 ID { get; set; } } 

Rendez la propriété de la classe de base protégée et non abstraite, puis atsortingbuez à chaque classe dérivée une propriété nommée de manière appropriée et implémentée en termes de propriété de la classe de base:

 // Base class protected int InternalID {get; set;} // Derived class [XmlElement] public int SomethingID { get {return InternalID;} set {InternalID = value;} }