一般情况下序列化有三种方式:
1)把对象转化成XML形式,不过只能保存共有字段和属性的值。
2)用Soap来序列化对象,这个对向前要家[Serializable()]。
3)把对象序列化为二进制。这三种情况中,3)的效率最好,适合在仅用.NET开发网络中传输。2)比较适合用.NET和Java进行交互的。
此外,注意对象中的对象的序列化问题(对象中的对象是克隆还是引用特别麻烦啵),以及父类是可序列化,而字类仍然要加[Serializeble()],最后就是对象图的问题。

解决方案 »

  1.   

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