2013-12-17 63 views
2

我創建了一個Serializable類與物業Serializable類不考慮字符串屬性

[XmlAttribute("ToleranceSign"), DefaultValue("1")] 
    public string ToleranceSign { get; set; } 

當我序列化這個類像下面

using (StringWriter writer = new StringWriter()) 
     { 
      XmlSerializer serial = new XmlSerializer(serializeData.GetType()); 
      XmlSerializerNamespaces xns = new XmlSerializerNamespaces(); 
      xns.Add(string.Empty, string.Empty); 
      serial.Serialize(writer, serializeData, xns); 
      writer.Flush(); 
      string serialContent = writer.ToString(); 
      return serialContent; 
     } 

所有其他屬性都轉換成XML節點除了ToleranceSign 。我在聲明中有什麼錯誤嗎?

回答

1

如果ToleranceSign的值是null,它將被忽略並且不被序列化。

如果ToleranceSign的值是"1",那麼[DefaultValue("1")]將導致它不被序列化。基本上:如果您希望在不是null的情況下始終將其序列化,請不要包含該屬性。

+0

謝謝馬克。我已經刪除了DefaultValue屬性,它工作正常。由於我爲ToleranceSign分配了「1」,因此它不是序列化的。我一直認爲DefaultValue的工作方式與DB中的默認值一樣(即如果沒有賦值,它會添加默認值)! – Naveen

0

DefaultValue屬性不會導致賦值。你需要通過代碼來做到這一點。請參閱note。也就是說,字符串屬性至少應該用String.Empty初始化以獲得序列化。

+0

我正在爲該屬性分配「1」。 – Naveen