5

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

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

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

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

4

1 回答 1

4

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

我已经尝试过“明显”的东西(特别是支持的*SpecifiedShouldSerialize*模式XmlSerializer,但也IsNullable),它只是继续不包括价值。

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

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

于 2010-03-08T05:08:40.740 回答