我有這樣一個類:如何在使用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;
}
}
}
像下面另一類繼承上面一個:
[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
在OperationContract
的響應類型中聲明爲MessageBodyMember
。
ASMX客戶端不是預計XML消息中的Description
。所以我試圖隱藏(使用new
運算符)派生類中的Description
屬性並將XmlIgnoreAttribute
應用於它。但它仍然序列化這個屬性。
(請注意,description
變量的聲明。我不知道爲什麼開發商再次聲明的派生類,而不是保持它protected
在基類本身)。
我怎能無視基本的財產在使用XmlSerializer的派生類中的類?我不能忽視它在基類中,因爲Structure
的其他子類型需要它。
OrgDeptID是一個計算器,順便說一句 - 錯字? –
@Marc:我沒有得到('OrgDeptID是一個stackoverflow')你的問題。我沒有在這裏複製整個代碼。我在這裏寫了幾個屬性來模擬場景。 – Learner
並且OrgStructure.description(field)永遠不會被使用;把它扔掉。 –