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; }
    }
}
,如需转载请自行联系原博主。
时间: 2017-12-04

LIST<T>现在也支持序列化和反序列化了的相关文章

Json.Net系列教程 3.Json.Net序列化和反序列化设置

原文 Json.Net系列教程 3.Json.Net序列化和反序列化设置 上节补充 首先补充一点,Json.Net是支持序列化和反序列化DataTable,DataSet,Entity Framework和NHibernate的.我举例说明DataTable的序列化和反序列化.创建一个DataTable对象,如下: DataTable dt = new DataTable(); DataColumn dcName = new DataColumn("Name"); DataColumn

ASP.NET中JSON的序列化和反序列化

导读:JSON是专门为浏览器中的网页上运行的JavaScript代码而设计的一种数据格式.在网站应用中使用JSON的场景越来越多,本文介绍 ASP.NET中JSON的序列化和反序列化,主要对JSON的简单介绍,ASP.NET如何序列化和反序列化的处理,在序列化和反序列化对日期时间.集合.字典的处理. 一.JSON简介 JSON(JavaScript Object Notation,JavaScript对象表示法)是一种轻量级的数据交换格式. JSON是"名值对"的集合.结构由大括号'{

Windows 8 Store Apps学习(60) 通信: 获取网络信息, 序列化和反序列化

介绍 重新想象 Windows 8 Store Apps 之 通信 获取网络信息 序列化 - json 序列化 - xml 序列化 - rss atom 示例 1.演示如何获取网络的相关信息 Communication/NetworkInfo.xaml.cs /* * 演示如何获取网络的相关信息 */ using System; using System.Collections.Generic; using Windows.Networking.Connectivity; using Windo

Effective C#原则25 让你的类型支持序列化

对象的持久是类型的一个核心功能.这是一个在你忽略对它的支持以前,没 有人会注意到的基本元素之一. 如果你的类型不能恰当的支持序列化,那么对 于把你类的做为基类或者成员的开发人员来说,你会给他们增加很多的工作量. 当你的类型不支持序列化时,他们不得不围绕这工作,自己添加实现这个标准的 功能.而对于不能访问类的私有成员的开发人来说,恰当的实现你的类型的序列 化是不太可能的.如果你的类型不支持序列化,那么对于你的用户来说,想再要 实现实它是很困难或者根本就不可能的事. 取而代之的是,为你的实际 类型添

详解Python中的序列化与反序列化的使用

  这篇文章主要介绍了详解Python中的序列化与反序列化的使用,针对pickle和cPickle对象进行了探究,需要的朋友可以参考下 学习过marshal模块用于序列化和反序列化,但marshal的功能比较薄弱,只支持部分内置数据类型的序列化/反序列化,对于用户自定义的类型就无能为力,同时marshal不支持自引用(递归引用)的对象的序列化.所以直接使用marshal来序列化/反序列化可能不是很方便.还好,python标准库提供了功能更加强大且更加安全的pickle和cPickle模块. cP

asp.net JSON序列化与反序列化使用

  对JSON数据进行序列化和反序列化 可以使用DataContractJsonSerializer类将类型实例序列化为JSON字符串,并将JSON字符串反序列化为类型实例. DataContractJsonSerializer在System.Runtime.Serialization.Json命名空间下,.NET Framework 3.5包含在System.ServiceModel.Web.dll中,需要添加对其的引用;.NET Framework 4在System.Runtime.Seri

JavaScriptSerializer序列化和反序列化JSON:使用自定义JavaScriptConverter

JSON的序列化和反序列化已经成为Web开发必不可少的知识.现在常用的有System.Web.Script.Serialization下的JavaScriptSerializer来进行处理:另外一个比较常用且高效的类库是JSON.NET. 在开发一些小的应用时,由于想尽量较少项目的依赖,所以不太愿意使用JSON.NET.JavaScriptSerializer基本上能满足简单的需求,但当一个属性要序列化成别的名字时,就显得力不从心了.还有就是可能业务需要,某些属性不希望在某一个条件下进行序列化.

.NET对象的XML序列化和反序列化

 序列化的概念 序列化是指一个对象的实例可以被保存,保存成一个二进制串,当然,一旦被保存成二进制串,那么也可以保存成文本串了.比如,一个计数器,数值为2,我们可以用字符串"2"表示.如果有个对象,叫做connter,当前值为2,那么可以序列化成"2",反向的,也可以从"2"得到值为2的计数器实例.这样,关机时序列化它,开机时反序列化它,每次开机都是延续的.不会都是从头开始. 序列化概念的提出和实现,可以使我们的应用程序的设置信息保存和读取更加方便

重新想象 Windows 8 Store Apps (60) - 通信: 获取网络信息, 序列化和反序列化

原文:重新想象 Windows 8 Store Apps (60) - 通信: 获取网络信息, 序列化和反序列化 [源码下载] 重新想象 Windows 8 Store Apps (60) - 通信: 获取网络信息, 序列化和反序列化 作者:webabcd 介绍重新想象 Windows 8 Store Apps 之 通信 获取网络信息 序列化 - json 序列化 - xml 序列化 - rss atom 示例1.演示如何获取网络的相关信息Communication/NetworkInfo.xa