C#序列化及反序列化:类实例和string类型之间转换

来源:互联网 发布:戴尔电脑怎么样知乎 编辑:程序博客网 时间:2024/05/03 02:32

[Serializable]
    public class ClassB
    {
        public int X;
        public int Y;
        public ClassB()
        {
            X = 3;
            Y = 4;
        }
    }

    [Serializable]
    public class ClassA
    {
        public int X;
        public int Y;
        public List<ClassB> listA;
        public ClassA()
        {
            listA = new List<ClassB>();
            X = 1;
            Y = 2;
            listA.Add(new ClassB());
            listA.Add(new ClassB());
        }
    } 


ClassA objA = new ClassA();

            IFormatter formatter = new BinaryFormatter();
            MemoryStream stream = new MemoryStream();
            formatter.Serialize(stream, objA);
            stream.Position = 0;
            byte[] buffer = new byte[stream.Length];
            stream.Read(buffer, 0, buffer.Length);
            stream.Flush();
            stream.Close();
            string strSerial = Convert.ToBase64String(buffer);

            ClassA objB = new ClassA();
            objB.listA.Clear();
            IFormatter formatter1 = new BinaryFormatter();
            byte[] buffer1 = Convert.FromBase64String(strSerial);
            MemoryStream stream1 = new MemoryStream(buffer1);
            objB = (ClassA)formatter1.Deserialize(stream1);
            stream1.Flush();
            stream1.Close();
0 0