一般情况下序列化有三种方式:
1)把对象转化成XML形式,不过只能保存共有字段和属性的值。
2)用Soap来序列化对象,这个对向前要家[Serializable()]。
3)把对象序列化为二进制。这三种情况中,3)的效率最好,适合在仅用.NET开发网络中传输。2)比较适合用.NET和Java进行交互的。
此外,注意对象中的对象的序列化问题(对象中的对象是克隆还是引用特别麻烦啵),以及父类是可序列化,而字类仍然要加[Serializeble()],最后就是对象图的问题。
1)把对象转化成XML形式,不过只能保存共有字段和属性的值。
2)用Soap来序列化对象,这个对向前要家[Serializable()]。
3)把对象序列化为二进制。这三种情况中,3)的效率最好,适合在仅用.NET开发网络中传输。2)比较适合用.NET和Java进行交互的。
此外,注意对象中的对象的序列化问题(对象中的对象是克隆还是引用特别麻烦啵),以及父类是可序列化,而字类仍然要加[Serializeble()],最后就是对象图的问题。
private void SerializeDataSet(string filename){
XmlSerializer ser = new XmlSerializer(typeof(DataSet));
// Creates a DataSet; adds a table, column, and ten rows.
DataSet ds = new DataSet("myDataSet");
DataTable t = new DataTable("table1");
DataColumn c = new DataColumn("thing");
t.Columns.Add(c);
ds.Tables.Add(t);
DataRow r;
for(int i = 0; i<10;i++){
r = t.NewRow();
r[0] = "Thing " + i;
t.Rows.Add(r);
}
TextWriter writer = new StreamWriter(filename);
ser.Serialize(writer, ds);
writer.Close();
2)
令一个类可序列化的最简单的方式是按如下所示使用 Serializable 属性标记它。
[Serializable]
public class MyObject {
public int n1 = 0;
public int n2 = 0;
public String str = null;
}
以下代码示例说明该类的实例是如何被序列化到一个文件中的。
MyObject obj = new MyObject();
obj.n1 = 1;
obj.n2 = 24;
obj.str = "Some String";
IFormatter formatter = new SoapFormatter();
Stream stream = new FileStream("MyFile.bin", FileMode.Create, FileAccess.Write, FileShare.None);
formatter.Serialize(stream, obj);
stream.Close();
3)
令一个类可序列化的最简单的方式是按如下所示使用 Serializable 属性标记它。
[Serializable]
public class MyObject {
public int n1 = 0;
public int n2 = 0;
public String str = null;
}
以下代码示例说明该类的实例是如何被序列化到一个文件中的。
MyObject obj = new MyObject();
obj.n1 = 1;
obj.n2 = 24;
obj.str = "Some String";
IFormatter formatter = new BinaryFormatter();
Stream stream = new FileStream("MyFile.bin", FileMode.Create, FileAccess.Write, FileShare.None);
formatter.Serialize(stream, obj);
stream.Close();