【问题标题】:xsd.exe generated classes don't serialize default value attributesxsd.exe 生成的类不序列化默认值属性
【发布时间】:2010-03-05 09:25:09
【问题描述】:

我有几个由 XSD 架构由 xsd.exe 生成的 .cs 文件。

我的问题是,当我尝试将这些类序列化为 xml 时,其值与 xsd 架构中定义的默认值匹配的属性没有被序列化。

我发现当我删除[System.ComponentModel.DefaultValueAttribute(typeof(<someType>), "<SomeValue>")] 后我的问题就解决了 代表默认字段的成员的属性。

所以我的问题是没有更优雅的方法来做到这一点?例如,有什么方法可以指定我想要序列化默认值?

【问题讨论】:

    标签: c# xml serialization xsd.exe


    【解决方案1】:

    简短的版本是:是的。看起来这是最简单的方法。

    我已经尝试了“显而易见”的东西(特别是 XmlSerializer 支持的 *SpecifiedShouldSerialize* 模式,还有 IsNullable),但它一直不包括值。

    下一个选项将是IXmlSerializable(这很简单)或XmlAttributeOverrides(重复工作)——这两个选项在这里都不是特别诱人。我想知道您目前的方法是否工作较少?您当然可以简单地导出 WSDL 并对其进行编辑以删除默认值(并从编辑后的版本生成)。

    顺便说一句 - 如果这是 WCF,则有 [DataMember(EmitDefaultValue = ...)] 确实 控制它;也许他们将此作为功能请求添加?

    【讨论】:

    • 感谢您的回答。事实上,我目前的方法是更少的工作,尽管它不是最好的。可能是当我有一些空闲时间时,我会弄乱 IXmlSerializable 或 XmlAttributeOverrides。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-04-04
    • 2011-03-25
    • 2014-01-08
    • 2016-05-29
    • 2011-02-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多