2014-09-30 107 views
0

我想用SharpSerializer将一个对象序列化到一个xml文件中。
不幸的是,生成的XML文件没有携带任何我提供的信息。
我的代码是这样的:C#序列化: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

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

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只序列化对象的属性。字段是 未序列化。如果你想序列化字段,它们必须被包装在属性中的 。

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(); 
    } 
}