在我的產品的版本1我有一個數據成員,看起來像這樣:Mantaining向後字典數據成員的兼容性WCF
[DataMember]
private Dictionary< EnumType1, Class1> Class1Dictionary;
凡EnumType1被定義爲:
[Flags]
public enum EnumType1
{
EnumMember1 = 1;
EnumMember2 = 2;
EnumMember3 = 4;
}
的SOAP消息看起來像這樣(我是釋義):
<Class1Dictionary>
<KeyValueOfEnumType1Class1UTLV0zE5>
<Key>EnumMember1 </Key>
<Value> ... </Value>
</KeyValueOfEnumType1Class1UTLV0zE5>
</Class1Dictionary>
在版本2中,我想將Class1Dictionary更改爲一個Dictionary<string, Class1>
而不是Dictionary<EnumType1, Class1>
,但我想保持服務級別與以前的版本兼容。當然,版本V2服務器/客戶端只知道如何處理Key的特定值,以匹配它所知道的枚舉值。對於所有其他異常是預期的行爲。
我的第一個想法是隻改變Class1Dictionary:
[DataMember]
private Dictionary< string, Class1> Class1Dictionary;
,但是這會扭曲SOAP消息,例如改變KeyValueOfEnumType1Class1UTLV0zE5到別的東西。所以問題是,我怎樣才能使用此DataMember或使用任何其他WCF功能來保留我的字典<字符串Class1>在v2代碼上,但是使用與Data1版本1的DataContract兼容的DataContract?