码迷,mamicode.com
首页 > 其他好文 > 详细

诡异的XmlSerializer属性字段Specified

时间:2015-10-08 19:44:55      阅读:221      评论:0      收藏:0      [点我收藏+]

标签:

自动生成代码时,往往会为一个字段假设为 * , 生成另一个bool型字段: *Specified;

  如:

    [Serializable]

    public class A

    {

        [XmlElement]

        public string Id { get; set; }

        [XmlIgnore]

        public bool IdSpecified { get; set; }

    }

     这种写法会导致XmlSerializer使用不便

     具体的在XmlSerializer 表现的问题是:

     当我们为 A类型赋值时,

     A a =new  A();

     a.Id = “test”;

不管怎么赋值,序列化后的XML 里都不会有<Id></Id>这个节点。

除非,你把 IdSpecified 设置为 true.

 

这个问题也告诉大家要注意:

以后别创建 *Specified 这样的bool字段。省得引起 非常诡异的错误。

 

解决方案:

(1)契约中最好不要用Specified这个字段。

(2)对于已经形成的契约,在设置这些字段时,要把Specified设置为true。

诡异的XmlSerializer属性字段Specified

标签:

原文地址:http://www.cnblogs.com/tuhongliang/p/XmlSerializer_Specified.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!