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

时间:2010-03-05 09:25:10

标签: c# xml serialization xsd.exe

xsd.exe通过XSD架构生成了几个.cs文件。

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

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

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

1 个答案:

答案 0 :(得分:4)

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

我尝试了“显而易见”的事情(尤其是*Specified支持的ShouldSerialize*XmlSerializer模式,还有IsNullable)并且它一直没有包括价值。

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

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