c# - xsd.exe 生成的类不序列化默认值属性

标签 c# xml serialization xsd.exe

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

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

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

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

最佳答案

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

我已经尝试了“显而易见”的事情(特别是 XmlSerializer 支持的 *SpecifiedShouldSerialize* 模式,而且 IsNullable),它只是继续不包括该值。

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

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

关于c# - xsd.exe 生成的类不序列化默认值属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2385634/

相关文章:

C# IPv6 服务器错误

c# - 如何匹配 C# 中的第一个子模式?

java - xml 模式验证错误 “The content of element ' flowPara' 不完整”

oop - 子类化 Avro 记录?

c# - protobuf-net 不支持指定的方法

linux - Linux内核net_device_ops是否被调用者序列化

c# - C# 新手-想添加 WndProc

c# - 在 XAML 中实现全局命名空间

javascript - 如何显示 XML 标签中的文本?

xml - 使用 xslt 将节点从 XML 插入到另一个 XML 文件