我有一個應用程序1.0版帶班,如:XMLSerialization與多個命名空間 - backwardscompatibility
class MyBaseDTO
{
[XmlElementAttribute(DataType="base64Binary", IsNullable=true, ElementName="Data")]
public byte[] Data{get;set}
}
和子類
class MySubDTO
{
[XmlElementAttribute(DataType="base64Binary", IsNullable=true, ElementName="MoreData")]
public byte[] MoreData{get;set}
}
現在在1.1版本我想移動MySubDTO.MoreData到MyBaseDTO。 的問題是,當我用1.0服務器進行通信以1.1客戶端MOREDATA從未serialzed因爲XML的樣子:
<a:MyBaseDTO i:type="b:MySubDTO"><a:Data>...</a:Data><b:MoreData>...</b:MoreData></a:MyBaseDTO>
如果我添加
class MyBaseDTO
{
[XmlElementAttribute(DataType="base64Binary", IsNullable=true, ElementName="Data")]
public byte[] Data(){get;set}
[XmlElementAttribute(DataType="base64Binary", IsNullable=true, ElementName="MoreData", NameSpace="MyBaseDTO")]
public byte[] MoreData(){get;set}
}
它的工作原理,當然,但我希望它能夠理解MoreData可能有兩個不同的名稱空間。我使用WCF在Web服務之間進行通信,並使用DataContractSerializer對服務器端的對象進行序列化。這可以完成嗎?