当前位置: 首页 > 编程语言 > C#

使用xsd.exe为类生成可空值分享

时间:2023-04-10 20:44:15 C#

使用xsd.exe为类生成可空值我一直在使用xsd.exe生成一个用于反序列化XML的类。我在源xsd中有十进制值,这是不需要的:xsd生成类生成如下代码:privatedecimalbalanceField;[System.Xml.Serialization.XmlAttributeAttribute()]publicdecimalBalance{get{returnthis.balanceField;}设置{this.balanceField=value;我注意到它不可为空。我怎样才能生成这样一个可为空的字段:私有小数?平衡字段;[System.Xml.Serialization.XmlAttributeAttribute()]公共十进制?余额{得到{返回this.balanceField;}设置{this.balanceField=value;现在它可以正常工作。我正在使用xsdv2.0.50727.42并且:生成您要查找的内容(无冗余...指定的字段和属性):privateSystem.NullableportField;[System.Xml.Serialization.XmlElementAttribute(IsNullable=true)]publicSystem.NullablePort{get{returnthis.portField;}设置{this.portField=value;我相信如果您将nillable="true"添加到您的XML架构定义中,XSD将为该元素类型创建一个可为空的。无论如何,这可能是个好主意,因为您暗示该值确实是nilable,这将使您的架构定义在这方面更加明确。不幸的是,在这种情况下它仍然包含相应的“指定”字段。如果想让序列化器直接服从可空值,则需要手动从生成的代码中移除“xxSpecified”列。我只是注意到它实际上包含以下代码:privateboolbalanceFieldSpecified;[System.Xml.Serialization.XmlIgnoreAttribute()]publicboolBalanceSpecified{get{returnthis.balanceFieldSpecified;}设置{this.balanceFieldSpecified=value;}}这提供了我需要的功能。如果有一种使用nullable的优雅方式,我会暂时搁置这个问题吗?改为键入。以上就是C#学习教程:使用xsd.exe生成类的可空值的所有内容。如果对大家有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场,如涉及侵权,请点击右边联系管理员删除。如需转载请注明出处: