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