将对象与静态成员变量一起序列化为XML

时间:2013-06-20 20:11:57

标签: c# .net serialization static xml-serialization

我有以下包含静态成员变量的对象。

我想要做的是序列化这个对象并将其保存到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(); 
}

1 个答案:

答案 0 :(得分:8)

使用序列化,我们只能序列化以下属性:

  • 公共
  • 非静态
  • 仅限阅读

在这种情况下,如果要序列化“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;} }
}