0
我讀過這post版本之間的enumaration更改,但它沒有幫助我。 我有以下WCF服務:wcf向前兼容性使用枚舉
[ServiceContract]
public interface IService1
{
[OperationContract]
MyEnum Foo();
}
[DataContract]
public enum MyEnum
{
[EnumMember]
first,
[EnumMember]
Second,
}
我正在尋找一種方式將新的枚舉成員,僅添加到服務端。假設我的客戶端使用舊版本的代理服務器,但沒有要添加的新枚舉成員。 我的目標是避免序列化異常,我希望我的客戶足夠聰明來處理這種情況,忽略新的價值或任何東西。有任何想法嗎?
感謝您的快速回復。 1.我的問題是我已經發布了舊版本,並且我的枚舉中沒有「未知」值,所以我無法將新值更改爲默認值。 2.在最後一個點,你的意思是這個技巧應該發生在WCF的行爲或其他地方? – Sean 2012-02-05 14:20:39
第2點它應該發生在你的代碼中,就在return語句之前。對於第1點,您可以將其更改爲任何現有值?如果舊客戶獲得新的枚舉,那麼應該發生什麼業務規則? – 2012-02-05 14:31:11
如果一位老客戶得到一個新的枚舉,我希望忽略它,或者將它切換到我目前沒有的默認值。 但是這個解決方案帶來了另一個問題 - 一個新客戶端將無法使用舊服務,因爲它將失敗調用'新服務'(舊服務中不存在)。 – Sean 2012-02-05 15:24:35