J'ai une classe comme ceci:Comment ignorer la propriété de la classe de base dans la classe dérivée lors de l'utilisation de XmlSerializer?
[Serializable]
public class Structure
{
#region Constants and Fields
/// <summary>
/// The description.
/// </summary>
private string description;
#endregion
/// <summary>
/// Gets or sets the Description of the subclass i.e subtype of structure
/// </summary>
public string Description
{
get
{
return this.description;
}
set
{
this.description = value;
}
}
}
Une autre classe comme ci-dessous au-dessus d'une hérite:
[XmlRoot(Namespace = "TestNamespace", ElementName = "OrgStructure")]
public class OrgStructure : Structure
{
private long orgDeptID;
/// <summary>
/// The description
/// </summary>
private string description;
public long OrgDeptID
{
get
{
return this.orgDeptID;
}
set
{
this.orgDeptID= value;
}
}
}
Je suis émigrent service ASMX pour WCF les garder compatibles avec les clients ASMX existants. Donc, je dois utiliser le XmlSerializer
au lieu de DataContractSerializer
. Le OrgStructure
est déclaré MessageBodyMember
dans le type de réponse OperationContract
.
Le client ASMX n'attend PAS leDescription
dans le message XML. J'ai donc essayé de masquer (en utilisant l'opérateur new
) la propriété Description
dans la classe dérivée et de lui appliquer XmlIgnoreAttribute
. Mais encore il sérialise cette propriété.
(S'il vous plaît noter que la déclaration de la description
variable. Je ne sais pas pourquoi développeur a déclaré à nouveau la classe dérivée au lieu le garder protected
dans la classe de base elle-même.)
Comment puis-je ignorer la propriété de la base classe dans la classe dérivée lors de l'utilisation de XmlSerializer? Je ne peux pas l'ignorer dans la classe de base puisque les autres sous-types de Structure
en ont besoin.
OrgDeptID est un stackoverflow, BTW - faute de frappe? –
@Marc: Je n'ai pas reçu ('OrgDeptID est un stackoverflow') votre question. Je n'ai pas copié le code entier ici. Je viens d'écrire quelques propriétés ici pour simuler un scénario. – Learner
OrgStructure.description (field) n'est jamais utilisé; jette-le. –