我有这样的课:
[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;
}
}
}
像下面这样的另一个类继承了上面的一个:
[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;
}
}
}
我正在将 ASMX 服务迁移到 WCF,以使它们与现有的 ASMX 客户端兼容。所以我必须使用XmlSerializer而不是DataContractSerializer。
被OrgStructure声明为MessageBodyMember的响应类型 OperationContract。
ASMX 客户端不期望Description在 XML 消息中。所以我试图隐藏(使用new运算符)Description派生类中的属性并应用于XmlIgnoreAttribute它。但它仍然序列化了这个属性。
(请注意description变量的声明。我不知道为什么开发人员再次声明派生类而不是将其保留protected在基类本身中。)
使用 XmlSerializer 时如何忽略派生类中基类的属性?我不能在基类中忽略它,因为其他子类型Structure需要它。