• LIST<T>现在也支持序列化和反序列化了


    在网上很多人说XML的序列化不支持泛型,今天有时间,去做了一个测试,测试环境是.net framework4.0,测试结果是可以被序列化和反序列化。

    namespace List可以被序列化
    {
        class Program
        {
            static void Main(string[] args)
            {
                SerializeNow();
                DeSerializeNow();
                XmlSerialize();
                XmlDeserialize();
                Console.ReadKey();
            }
            #region 二进制序列化
            public static void SerializeNow()
            {
                People people = new People { Name = "zzl", Sex = "男" };
                FileStream fileStream = new FileStream("c:\\temp.dat", FileMode.Create);
                BinaryFormatter b = new BinaryFormatter();
                b.Serialize(fileStream, people);
                fileStream.Close();
            }
     
            public static void DeSerializeNow()
            {
                People people = new People();
                FileStream fileStream = new FileStream("c:\\temp.dat", FileMode.Open,
                                        FileAccess.Read, FileShare.Read);
                BinaryFormatter b = new BinaryFormatter();
                people = b.Deserialize(fileStream) as People;
                if (people != null) Console.WriteLine(people.Name.PadRight(10) + people.Sex);
                fileStream.Close();
            }
            #endregion
     
            #region XML序列化 (XML序列化不支持泛型。你需要自行序列化到数组再复制到泛型集合)
            public static void XmlSerialize()
            {
                List<People> peopleList = new List<People> 
                { 
                    new People{Name = "张三", Sex = "男"},
                    new People{Name = "李四", Sex = "女"},
                };
                XmlSerializer xs = new XmlSerializer(typeof(List<People>));

    Stream stream = new FileStream("c:\\zzl.XML", FileMode.Create,

    FileAccess.Write, FileShare.Read);

                xs.Serialize(stream, peopleList);
                stream.Close();
            }
            public static void XmlDeserialize()
            {
                XmlSerializer xs = new XmlSerializer(typeof(List<People>));
                Stream stream = new FileStream("C:\\zzl.XML", FileMode.Open, 
                                FileAccess.Read, FileShare.Read);
                List<People> peopleList = xs.Deserialize(stream) as List<People>;
                if (peopleList != null) peopleList.ForEach(i => 
                   Console.WriteLine(i.Name.PadRight(10) + i.Sex));
     
                stream.Close();
            }
            #endregion
        }
     
        /// <summary>
        /// 人类
        /// </summary>
        [Serializable]
        public class People
        {
            /// <summary>
            /// 姓名
            /// </summary>
            public string Name { get; set; }
            /// <summary>
            /// 性别
            /// </summary>
            public string Sex { get; set; }
        }
    }
  • 相关阅读:
    ffmpeg结构体以及函数介绍(三)
    FFMPEG解码流程(转)
    ffmpeg结构体以及函数介绍(一)
    摄像头视频采集压缩及传输
    bedework文档(开始简单部分)
    【实时数据库PISDK】关于PITime的悲剧
    【项目研究】自动安装并配置ODBC的思路与实现
    【读书笔记】动态链接库
    如何最快测试CPU是大端机还是小端机?
    学习编程的五条捷径
  • 原文地址:https://www.cnblogs.com/lori/p/2153042.html
Copyright © 2020-2023  润新知