[Serializable]
class a
{
    int age = 10;
    string name = "XXXX"
}

解决方案 »

  1.   

    1、引用一个二进制序列化类
    2、用函数将当前版本序列化
    3、序列化数据流a、引用一个二进制序列化类
    b、用函数将当前版本反序列化
    c、反序列化数据流
    d、将数据流转成指定的类型,使用
      

  2.   

    using System.Runtime.Serialization; 
    using System.Runtime.Serialization.Formatters; 
    using System.Runtime.Serialization.Formatters.Binary;将对象写到数组objectdata,然后你可以将数组存到文件或通进网络发出去
    public void WriteObject(Object o)
    {
       MemoryStream ms=new MemoryStream();
       IFormatter objFormatterFromStream = new BinaryFormatter(); 
       objFormatterFromStream.Serialize(ms,o);
       byte[] objectData=ms.ToArray();
       int objectDataLength=objectData.Length;
    }从文件或通进网络读入数datatmp,然后反序列化
    public Object ReadObject  ()
    {
    netStream.Read(datatemp,0,dataLength);
    MemoryStream ms=new MemoryStream(datatemp);
    IFormatter objFormatterFromStream = new BinaryFormatter(); 
    Object o=(Object)objFormatterFromStream.Deserialize(ms); 
    return o;
    }
      

  3.   

    序列化可能会出现版本问题,如果简单的使用[Serializable],在类修改属性后,将不能反序列化旧版本的文件。
    采用方法:
    继承接口:ISerializable
    实现接口方法:
    (SecurityAction.Demand,SerializationFormatter=true)]
    void ISerializable.GetObjectData(SerializationInfo info, StreamingContext context)
    {
        info.AddValue("age", this.age);
        info.AddValue("name ",this.name);
    }
    [SecurityPermissionAttribute(SecurityAction.Demand,SerializationFormatter=true)]
    private a(SerializationInfo info, StreamingContext context) 
    {
        try{this.age= (int)info.GetValue("age",typeof(int));}catch{age=10//如果没有反序列化成功的默认值}
        try{this.name= (string)info.GetValue("name",typeof(string));}catch{name=""//如果没有反序列化成功的默认值}
    }这样再调用序列化和反序列化的时候就可以。