【问题标题】:Adding [DataContract] to class with [Serializable] causes problems使用 [Serializable] 将 [DataContract] 添加到类会导致问题
【发布时间】:2012-09-03 01:05:07
【问题描述】:

我正在使用 DataContractSerializer 来持久化对象。大多数类都有 [DataContract] 属性,但有一个(不知道为什么)有 [Serializable]。此类的属性具有 [DataMember] 属性。到目前为止,一切正常。

最近,我尝试添加一个新属性,但在反序列化时出错。错误消息类似于:'property Notes was expected but found property ModuleNr'.

我尝试添加 [DataContract] 属性,但出现不同的错误,例如:“未找到 id 为 15 的反序列化对象”。似乎该类根本没有被反序列化。

谁能解释我做错了什么以及我可以做些什么来反序列化现有对象。

谢谢。

【问题讨论】:

    标签: datacontract serializable


    【解决方案1】:

    是不是被持久化的对象使用的是旧的类结构,而你添加的属性是必需属性,导致反序列化失败?

    另外,如果 Serializable 属性存在并且您不确定它为什么存在,那么验证其他代码是否没有使用此类进行序列化可能是一个好主意 - 如果是,则您正在添加的新属性可能会破坏它:)

    希望这会有所帮助!

    【讨论】:

    • 谢谢。我使用属性参数“IsRequired=false”添加新属性。我也不知道该类的任何其他用途。它在应用启动时调用,加载持久化对象是第一个操作。
    猜你喜欢
    • 1970-01-01
    • 2011-04-26
    • 1970-01-01
    • 1970-01-01
    • 2016-08-11
    • 1970-01-01
    • 2013-12-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多