微软XSD工具根据XSD文件生成的C#类中多余Specified属性问题

微软XSD工具在根据XSD文件schema生成对应的C#载体类的时候,会发现有些时候,对于一些节点,不仅仅生成了对应的对象Property,还生成了一个相关的Specified.比如说,下边的schema.




在生成类中会有两个多余的属性, 

public boolMinDuration_100msSpecified

public boolStageOnDemandSpecified


这两个属性有什么作用呢?这个bool的属性代表与其相关的属性是否应该被序列化。当我们从XML文件中的内容向C#中的类转换的时候,是用不到这些新增的字段的。但是当从C#对象向XML序列化的时候,就用到了。当MinDuration_100msSpecified设置为false的时候,相关的字段MinDuration_100ms是不会参与序列化的,也就是使用XmlSerializer工具的时候,生成的XML不含有MinDuration_100ms节点。

 

nullabletrue并且minCoccurs0的时候,如果没有specified字段,如果C#对象中MinDuration_100ms没有赋值,那么默认为0,在XML中生成<MinDuration_100ms>0</MinDuration_100ms>的节点,这个跟不生成这个节点所代表的意思是不一样的,一个是0值,另外一个是没有值。所以这里在序列化之前,我们需要手动设置一下sepecified字段,告诉XmlSerializer是否要序列化这个字段,从而保持生成的XML文件正确并且文件的大小不至于冗余。


  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值