我們有一個使用幾個DataContracts現有的WCF服務。我們要根據設備上修改的系列化,使從移動設備訪問時,服務應該序列只有一些重要的數據成員(不是全部)動態忽略獲取序列化的數據成員
我們有2個選擇這裏
- 創建獨立的操作和不同類型的設備 數據契約
- 惹實際XML序列化和抑制基於設備上創建 不必要的元素
我們不想與第一個選項一起使用,因爲它將來會引入大量冗餘代碼問題
小型研究表明我們需要使用IXmlSerializable並重寫readXML()和writeXML()方法。但在同一時間,我已經看到的地方,DataContract和IXmlSerializable的不應該在一起
的任何實例與實際系列化亂用是極大的讚賞。
[DataContract]
public class TokenMessage
{
string tokenValue;
string extraValue;
[DataMember]
public string Token
{
get { return tokenValue; }
set { tokenValue = value; }
}
[DataMember]
public string Extra
{
get { return extraValue; }
set { extraValue = value; }
}
}
現在,當我訪問返回一個典型TokenMessage數據契約,來自移動設備的服務,我不希望「額外」數據成員被序列化,即當我提供一個不同的參數來操作合同時,應該能夠序列化的一些/所有的數據成員(取決於操作)
PS:現在請忽略設備檢測部分。讓我們假設我們在操作合同中有一個參數,它可以幫助我們識別設備
使用接口並返回接口而不是類。 – Dalorzo