你的位置:首页 > ASP.net教程

[ASP.net教程]诡异的XmlSerializer属性字段Specified


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

  如:

    [Serializable]

    public class A

    {

        [

        public string Id { get; set; }

        [

        public bool IdSpecified { get; set; }

    }

     这种写法会导致

     具体的在

     当我们为 A类型赋值时,

     A a =new  A();

     a.Id = “test”;

不管怎么赋值,序列化后的

除非,你把 IdSpecified 设置为 true.

 

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

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

 

解决方案:

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

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