我尝试使用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" />
感觉我错过了一些明显的东西,但我不知道它是什么。
答案 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();
}
}