听起来 xml 序列化可能是您的最佳选择。它非常易于实现、易于存储、易于查看、易于编辑等。
例如,您有一个定义了一些公共属性的 AAA 类:
public class AAA
{
public Guid Id {get; set;}
public string Name {get; set;}
public int Value {get; set;}
}
和一个集合类:
public class AAACollection
{
public string Name { get; set; }
public List<AAA> Items { get; set; }
}
你像这样填写你的收藏:
AAA a = new AAA ();
a.Id = Guid.NewGuid ();
a.Name = "test";
a.Value = 12;
AAACollection coll = new AAACollection ();
coll.Name = "First collection";
coll.Items = new List<AAA>();
coll.Items.Add (a);
序列化为xml 很简单:
XmlSerializer xs = new XmlSerializer (typeof(AAACollection));
Stream s = File.OpenWrite(@"d:\test.xml");
xs.Serialize (s, coll);
s.Close ();
XML 将是这样的:
<AAACollection xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<Items>
<AAA>
<Id>b5d4f0ab-f34e-4a55-91db-f4737869f81b</Id>
<Name>test</Name>
<Value>12</Value>
</AAA>
</Items>
<Name>First collection</Name>
</AAACollection>
从 xml反序列化也很简单:
XmlSerializer xs = new XmlSerializer (typeof(AAACollection));
Stream s = File.OpenRead(@"d:\test.xml");
AAACollection coll = (AAACollection)xs.Deserialize (s);
s.Close ();
如果您使用 xml 序列化来持久化对象,则可以搜索某些数据而无需实际将它们加载到内存中。例如,您可以搜索 xml 文件或查询数据库中的记录并反序列化仅找到的项目。
当然,XML 序列化不同于二进制序列化。例如,XML 序列化只序列化公共属性。或者你会对没有无参数构造函数的类有一些困难。XML 序列化显然有一些细微之处,但大多数都是可以解决的。尽管二进制序列化没有所有这些问题,而且速度更快,但它有自己的问题,通常不适合长期存储。
链接: