[英]How to Serialize Object to Xml
我要存儲的類:
[Serializable]
public class Storagee
{
int tabCount;
List<string> tabNames;
List<EachItemListHolder> eachItemsHolder;
public void PreSetting(int count, List<string> strings, List<EachItemListHolder> items)
{
tabCount = count;
tabNames = strings;
eachItemsHolder = items;
}
public void PreSetting(int count ) //debug purpose
{
tabCount = count;
}
public int GetTabCount() { return tabCount; }
public List<string> GetTabNames() { return tabNames; }
public List<EachItemListHolder> GetListEachItemListHolder() { return eachItemsHolder; }
}
序列化類:
namespace Book
{
class SaveAndLoad
{
public void SaveAll(Storagee str)
{
var path = @"C:\Temp\myserializationtest.xml";
using (FileStream fs = new FileStream(path, FileMode.Create))
{
XmlSerializer xSer = new XmlSerializer(typeof(Storagee));
xSer.Serialize(fs, str);
}
}
public Storagee LoadAll()
{
var path = @"C:\Temp\myserializationtest.xml";
using (FileStream fs = new FileStream(path, FileMode.Open)) //double
{
XmlSerializer _xSer = new XmlSerializer(typeof(Storagee));
var myObject = _xSer.Deserialize(fs);
return (Storagee)myObject;
}
}
}
}
主要方法(窗口形式):
class Book
{
List<EachTab> eachTabs;
Storagee storagee;
SaveAndLoad saveAndLoad;
eachTabs = new List<EachTab>();
storagee = new Storagee();
saveAndLoad = new SaveAndLoad();
void Saving()
{
int count = UserTab.TabCount; // tab counts
storagee.PreSetting(count);
saveAndLoad.SaveAll(storagee);
}
}
它生成xml文件,但不保存數據。
我在其他項目中嘗試了序列化代碼,並且該代碼有效。
但它不在此解決方案中
因為我是編碼的新手,所以我不知道問題出在哪里
特別是序列化部分。
序列化代碼的復制和粘貼調整很小
它生成xml文件,但不保存數據。
它不會保存任何數據,因為您的類沒有提供可以序列化的任何數據。 XmlSerializer
僅序列化公共字段和屬性,而Storagee
類沒有任何序列。
例如,您可以將公共獲取方法更改為公共屬性:
public int TabCount { get; set; }
public List<string> TabNames { get; set; }
public List<string> EachItemsHolder { get; set; }
另外,如果不選擇使用公共屬性,則還可以通過實現IXmlSerializable考慮使用自定義序列化。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.