1 / 6
文档名称:

泛型集合序列化和反序列化.doc

格式:doc   页数:6页
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

泛型集合序列化和反序列化.doc

上传人:2286107238 2016/3/10 文件大小:0 KB

下载得到文件列表

泛型集合序列化和反序列化.doc

相关文档

文档介绍

文档介绍:.页眉. .页脚. 泛型集合的序列化和反序列化 ,和普通对象没有两样, FrameWor k 里面没有提供现成的 API ,这是一个我自己封装的一个方法,采用了 objec t 作为被序列化对象的参数类型,亦即可以接受任意类型的对象,并通过调用 GetType 方法获得被序列化对象的转换前的类型(或者说是被序列化对象的真正类型, object 在c#里是所有对象的基类),牺牲了一点点类型转换带来的性能损失,但是带来了很好的封装性,易用性。我简单了做了个对比测试,写了一个以具体类型作为参数的序列化方法,(方法内代码一模一样), 序列化一个简单对象,重复执行 1万次,相差大概 10毫秒级,只要你对性能要求不是特别苛刻,我觉得都适合采用。/// <summary> /// 序列化成 xml 字符串/// </summary> /// <param name="obj"></param> /// <returns> 序列化后的字符串</returns> public string Serialize( object obj) {XmlSerializer xs=new XmlSerializer (()); using (MemoryStream ms=new MemoryStream ()) {. XmlTextWriter xtw =new . XmlTextWriter (ms, . Encoding .UTF8); =. Formatting .Indented; (xtw, obj); (0, SeekOrigin .Begin); using (StreamReader sr=new StreamReader (ms)) {string str =(); (); (); return str; }}}调用代码举例如下:public class classA {public string name {get ;set ;} public string address {get ;set ;} } .页眉. .页脚. …List <classA >list =new List <classA >() {new classA (){name ="1" , address ="2" },new classA {name ="2" ,address ="3" }}; string s=Serialize(list); s=Serialize( new classA (){name ="1" ,address ="2" }); 。翻遍了 MSDN 上关于序列化和反序列化的文章,都是长篇大论教你怎么序列化和反序列化一个对象,唯独没有讨论怎么序列化和反序列化集合对象的, 更别提泛型集合了。当我在xml文件里直接录入两个结构一模一样的节点时, IDE 智能感应提示我 xml 文件里必须有而且是唯一的一个根节点,也就是说, 如果你想反序列化一个对象数组, 如clas