C#序列化:xml空出来了

时间:2014-09-30 05:59:34

标签: c# serialization xml-serialization

我尝试使用SharpSerializer将对象序列化为xml文件。
不幸的是,生成的xml文件并没有包含我提供的任何信息。
我的代码类似于:

public class SaveGameInfo
{
    public string test;
}

public class main
{
    public void onClickedSave()
    {
        SaveGameInfo obj = new SaveGameInfo();
        obj.test = "TestInformation";
        SharpSerializer sharpSerializer = new SharpSerializer();
        sharpSerializer.Serialize(obj, "test.xml");
    }
}

生成的XML只包含以下信息:

<Complex name="Root" type="SaveGameInfo, Assembly-CSharp, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null" />

感觉我错过了一些明显的东西,但我不知道它是什么。

2 个答案:

答案 0 :(得分:2)

您应该使用属性而不是字段:

public class SaveGameInfo
{
    public string Test { get; set; }
}

public class main
{
    public void onClickedSave()
    {
        SaveGameInfo obj = new SaveGameInfo();
        obj.Test = "TestInformation";
        SharpSerializer sharpSerializer = new SharpSerializer();
        sharpSerializer.Serialize(obj, "test.xml");
    }
}
  

Note 2: SharpSerializer仅序列化对象属性。领域是   没有序列化。如果你想序列化字段,它们必须是   包裹在属性中。

答案 1 :(得分:0)

也许不使用SharpSerializer就试试这个。

public class main
{
    public void onClickedSave()
    {
        SaveGameInfo obj = new SaveGameInfo();
        obj.test = "TestInformation";
       obj.SerializeToXml("Test.xml");  
    }
}

public class SaveGameInfo
{
    public string test;

    public void SerializeToXml(string fullFileName)
    {
        var serializer = new XmlSerializer(typeof(SaveGameInfo));
        var textWriter = new StreamWriter(fullFileName);
        serializer.Serialize(textWriter, this);
        textWriter.Close();
    }
}