自定义的DataSet如何序列化?

Example:

[Serializable]
class MyDataSet : DataSet, ISerializable
{
ArrayList list;
public ArrayList List
{
get{return list;}
}

public MyDataSet() : base()
{
list = new ArrayList();
}

protected MyDataSet(SerializationInfo info, StreamingContext context) : base(info, context)
{
list = (ArrayList)info.GetValue("List", typeof(ArrayList));
}

public void GetObjectData(SerializationInfo info, StreamingContext context)
{
Type t = typeof(DataSet);
MethodInfo mi = t.GetMethod("System.Runtime.Serialization.ISerializable.GetObjectData",
BindingFlags.Instance ¦ BindingFlags.NonPublic);
mi.Invoke(this, new object[]{info,context});
info.AddValue("List", List);
}
}

// test
MyDataSet mds = new MyDataSet();
mds.List.AddRange(new int[]{1,2,3,4});

BinaryFormatter bf = new BinaryFormatter();
MemoryStream ms = new MemoryStream();

bf.Serialize(ms, mds);
ms.Position = 0;
mds = (MyDataSet)bf.Deserialize(ms);

foreach(object item in mds.List)
Console.WriteLine(item);

Published At
Categories with Web编程
Tagged with
comments powered by Disqus