【问题标题】:Ignore field order in DataContractSerializer忽略 DataContractSerializer 中的字段顺序
【发布时间】:2010-12-03 13:36:25
【问题描述】:

在反序列化时,DataContractSerializer 不仅要求元素 name 匹配,还要求它相对于其他元素具有一定的顺序。

我的应用程序是这样的,每个字段都可以通过其名称唯一标识。因此,我希望 XML 文件能够以任何顺序包含元素,并且反序列化器仍然可以工作。

可以这样设置DataContract吗?

Data Member Order 中的介绍性段落暗示订单是强制执行的可选,但我还没有找到真正使其成为可选的方法。

后续问题Simple data file versioning with DataContractSerializer

【问题讨论】:

    标签: .net datacontractserializer


    【解决方案1】:

    不,这不是可选的。显式指定排序是可选的,否则顺序由您链接到的基本规则确定(基本类型优先,字母顺序,...)。

    介绍性段落只是暗示您并不总是需要知道或关心订单 - 例如,如果您使用的是生成的代理。

    如果您使用 DataContractSerializer 反序列化文件,我能想到的最佳解决方案是在反序列化之前使用 XSLT 将其转换为正确的顺序。

    如果您正在调用 Web 服务(DataContractSerializer 的设计目的),您最好遵守合同中的顺序。

    【讨论】:

    • 我只是在现有文件中添加一个新值。有点意外的是,我不仅要插入正确的名称,还要插入正确的位置。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-16
    相关资源
    最近更新 更多