我有这样的课:
[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
需要它。