xsd.exe通过XSD架构生成了几个.cs文件。
我的问题是,当我尝试将这些类序列化为xml时,其值与xsd架构中定义的默认值匹配的属性不会被序列化。
当我删除[System.ComponentModel.DefaultValueAttribute(typeof(<someType>), "<SomeValue>")]
时,我发现问题已解决
表示默认字段的成员的属性。
所以我的问题是不是有更优雅的方法来做到这一点?例如,有没有办法指定我想要将序列化的默认值?
答案 0 :(得分:4)
简短版本是:是的。看起来这是最简单的方法。
我尝试了“显而易见”的事情(尤其是*Specified
支持的ShouldSerialize*
和XmlSerializer
模式,还有IsNullable
)并且它一直没有包括价值。
下一个选项可能是IXmlSerializable
(这很简单),或XmlAttributeOverrides
(重复工作) - 这两个都不是特别诱人。我想知道你目前的做法是否较少?您当然可以简单地导出WSDL并编辑它以删除默认值(并从编辑后的版本生成)。
顺便说一句 - 如果这是WCF,那么做的[DataMember(EmitDefaultValue = ...)]
控制它;也许他们将此添加为功能请求?