2013-06-20 62 views
0

我有以下包含靜態成員變量的對象。將對象與靜態成員變量一起序列化爲XML

我想要做的是序列化這個對象並保存到XML。不幸的是,下面的代碼似乎無法完成這項工作。

我希望得到這個工作的任何幫助,請。

[Serializable] 
public class Numbers 
{ 
    public int no; 
    public static int no1; 
    public SubNumbers SubNumber; 
} 

[Serializable] 
public class SubNumbers 
{ 
    public int no; 
    public static int no2; 
} 

[TestMethod] 
public void Serialize_Object_with_Static_Property_test() 
{ 
    Numbers a = new Numbers(); 
    a.no = 12; 
    Numbers.no1 = 345243; 
    SubNumbers s = new SubNumbers(); 
    s.no = 459542; 
    SubNumbers.no2 = 9999999; 
    a.SubNumber = s; 
    String filename = @"a1.txt"; 
    FileStream fs = new FileStream(filename, FileMode.Open); 
    XmlSerializer x = new XmlSerializer(typeof(Numbers)); 
    x.Serialize(fs, a); 
    fs.Close(); 
} 
+0

工作的哪部分不是在做什麼?我懷疑你只是得到實例成員,對嗎?正如在_not_中的靜態成員。 – DonBoitnott

+3

我不知道是否有辦法讓XmlSerializer查看靜態成員(實際上並不合理) - 但是您可以添加實例包裝器屬性? – Blorgbeard

+1

與http://stackoverflow.com/questions/1293496/serialize-a-static-class類似,Jon Skeet解釋了原因。 – Lloyd

回答

4

系列化,我們只能序列化的屬性:

  • 公共
  • 不是靜態
  • 沒有讀過只有

在這種情況下,如果你想序列化「no1」,你必須包裝它,像這樣:

[Serializable] 
public class Numbers 
{ 
    public int no; 
    public static int no1; 
    public SubNumbers SubNumber; 

    public int no1_Serialize {get {return no1;} set {no1 = value;} } 
}