DeSerialize null values

本文关键字:values null DeSerialize | 更新日期: 2023-09-27 18:26:14

我正试图将一个xml文件序列化为一个元素可以为空的类

XML文件

  <Status StatusId="1">
    <StatusName>Not inspected</StatusName>
    <Acute></Acute>
  </Status>
  <Status StatusId="2">
    <StatusName>Acute</StatusName>
    <Acute>1</Acute>
  </Status>

 private int _acute;
         public int Acute
         {
             get { return _acute; }
             set
             {       
                   _acute = value;
                    NotifyPropertyChanged("Acute");
             }
         }

我试过int?和CCD_ 1,但什么都不起作用——任何人都知道如何在空的elemet中读取而不会出现任何错误。

DeSerialize null values

我猜这不是正确的方法,但我过去自己处理过从stringint的转换。大致:

 private int _acute = 0; // or assign to some more appropriate default
 [XmlIgnore]
 public int Acute
 {
     get { return _acute; }
     set
     {       
           _acute = value;
           NotifyPropertyChanged("Acute");
     }
 }
 // I kept mine as public but may be able to hide it at a minimal level that
 // serialization still works.
 [XmlElement(ElementName = "Acute")]
 public string SerializedAcute
 {
     get { return _acute.ToString(); }
     set
     {   
         Int32.TryParse(value, out _acute)
     }
 }

如果你有很多这样的东西,它可能会变得有点难看。

尝试将Acute设置为int?。int不能包含null,可为null的int(int?s)可以。

编辑:注意在回应之前要自我阅读所有内容。

也许您的问题是,<Acute>实际上并没有从XML中丢失,它在那里,但有一个空值,不能转换为任何int?尝试从XML中删除<Acute></Acute>行,并将属性改回int。