[英]Serializing a custom class to a file
我正在為Player
類編寫一個save方法,我可以使用二進制編寫Player
來序列化大多數字段,但是我的自定義類字段無法序列化(我有一個用於自定義種族的Race字段)
由於我將擁有很多不同的自定義類(例如Race),因此我確實需要一種可靠的方法來保存此信息。
那么,我使用的是錯誤的格式化程序嗎? 如果是這樣,我應該使用什么? 或者,如何編寫方法來序列化它? 我已經使用[Serializable()]
屬性並在需要的地方實現了ISerializable
接口。
這是代碼:
public void Save()
{
Stream stream = File.Open(SaveSlot, FileMode.Create);
BinaryWriter writer = new BinaryWriter(stream);
PlayerData saveData = new PlayerData();
writer.Write(saveData.Name = PlayerData.player.Name);
writer.Write(saveData.Race = PlayerData.player.Race);
writer.Write(saveData.PlayClass = PlayerData.player.PlayClass);
writer.Write(saveData.Level = PlayerData.player.Level);
writer.Write(saveData.Experience = PlayerData.player.Experience);
writer.Write(saveData.Strength = PlayerData.player.Strength);
writer.Write(saveData.Dexterity = PlayerData.player.Dexterity);
writer.Write(saveData.Constitution = PlayerData.player.Constitution);
writer.Write(saveData.Intelligence = PlayerData.player.Intelligence);
writer.Write(saveData.Wisdom = PlayerData.player.Wisdom);
writer.Write(saveData.Charisma = PlayerData.player.Charisma);
writer.Write(saveData.Wounds = PlayerData.player.Wounds);
writer.Write(saveData.MaxWounds = PlayerData.player.MaxWounds);
writer.Write(saveData.Attackbonus = PlayerData.player.Attackbonus);
writer.Write(saveData.Defensebonus = PlayerData.player.Defensebonus);
writer.Close();
Console.WriteLine("Data Saved Successfully");
}
就像我在評論中所說,您可以為此使用json格式。
樣品課
public class MyObject
{
public string MyProperty { get; set; }
}
樣本數據
List<MyObject> objects = new List<MyObject>
{
new MyObject{MyProperty = "test 1"},
new MyObject{MyProperty = "test 2"},
new MyObject{MyProperty = "test 3"}
};
樣例代碼
然后,您可以使用此代碼來序列化數據(使用Newtonsoft )。
string json = JsonConvert.SerializeObject(objects);
json
的內容將是
[{“ MyProperty”:“ test 1”},{“ MyProperty”:“ test 2”},{“ MyProperty”:“ test 3”}]
如果要反序列化字符串,請使用此方法。
List<MyObject> deserialzed = JsonConvert.DeserializeObject<List<MyObject>>(json);
更多信息
您可以將json字符串保存到文件中,並在需要時進行加載和反序列化。 這適用於每種類型的屬性,包括列表和自定義對象。
閱讀JSON格式以了解更多信息。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.