首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >DataContractSerializer与枚举问题

DataContractSerializer与枚举问题
EN

Stack Overflow用户
提问于 2012-06-06 09:38:17
回答 1查看 1.6K关注 0票数 1

我正在使用DataContractSerializer。我有下面的旧版本的枚举

代码语言:javascript
复制
[DataContract]
public Enum Foo
{
    [EnumMemberAttribute]
    X,

    [EnumMemberAttribute]
    Y,

    [EnumMemberAttribute]
    Z
}

我几乎没有使用“Z”的文件。现在,在最新版本中,我从枚举中删除了“Z”。但是,当我试图在当前代码中使用这些旧文件时,我会得到'Z‘的一个例外。

对于XmlSerializer,我们可以通过使用XmlAttributeOverrides来避免这个问题。但是对于DataContractSerializer来说,不知道如何处理这种情况。

请帮我整理一下。

EN

回答 1

Stack Overflow用户

发布于 2012-06-06 09:49:52

线索在“数据合同”一词中。你不能随便违反合同。如果你那样做,就不能工作了,。现在,有一些灵活性..。只要你不关心那些只知道旧合同的人,你通常可以对合同做一些补充(所以即使这也是可疑的)。然而,也许更好的选择是:

代码语言:javascript
复制
[EnumMemberAttribute, Obsolete("Use Y instead", true)]
Z

这将使仍然与DataContractSerializer一起工作(尽管IIRC XmlSerializer不喜欢它),但是编译器将停止在常规代码中使用它。

如果您完全摆脱了Z,您就不能再处理任何提到Z的保存的数据。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10911659

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档