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