private static void Serialize1(string filename, object obj)
        {
            var stream = new FileStream(filename, FileMode.OpenOrCreate);
            var serializer = new DataContractSerializer(typeof (PackageManifest));
            serializer.WriteObject(stream, obj);
            stream.Close();
        }
当用以上方法,序列化一个对象后,用下面的反序列方法,发现有的文件居然不能反序列化,(PackageManifest 里面没有特殊对象,不然不会有的可以序列化,而有的不可以)
 private PackageManifest Deserialize( string manifestFilePath)
        {
            try
            {
                var serializer = new DataContractSerializer(typeof (PackageManifest ));
                var stream = new FileStream(manifestFilePath, FileMode.Open, FileAccess .Read);
                var manifestObject = serializer.ReadObject(stream) as PackageManifest;
                stream.Close();
                return manifestObject;
            }
            catch ( Exception ex)
            {
                return null;
            }
        }
然而,当我用格式化工具,将Serialize1序列化的对象格式化后,再来调用反序列化居然又可以了。 于是找到一个办法,Serialize的时候直接输出格式化的xml就没有问题了。
private static void Serialize2(string filename, object obj)
        {
            var ds = new DataContractSerializer(typeof (PackageManifest ));
            var settings = new XmlWriterSettings { Indent = true };
            using ( var writer = XmlWriter.Create(filename, settings))
            {
                ds.WriteObject(writer, obj);
            }
        }

DataContractSerializer序列化与反序列化遇到的奇怪问题的更多相关文章

  1. 序列化和反序列化的几种方式(DataContractSerializer)(二)

    DataContractSerializer 类 使用提供的数据协定,将类型实例序列化和反序列化为 XML 流或文档. 无法继承此类. 命名空间: System.Runtime.Serializati ...

  2. 序列化和反序列化的几种方式(DataContractSerializer)

    序列化和反序列化的几种方式(DataContractSerializer) DataContractSerializer 类 使用提供的数据协定,将类型实例序列化和反序列化为 XML 流或文档. 无法 ...

  3. WCF初探-24:WCF序列化和反序列化

    前言 WCF包含很多封装的内部机制,这些是我们在编写程序时不会经常看到的.比如上一篇讲解的Message.这一篇我将讲解WCF的另一种内部机制,WCF的序列化和反序列化.通常我们在编写WCF服务程序的 ...

  4. 序列化和反序列化的几种方式(JavaScriptSerializer 、XmlSerializer、DataContractSerializer)(一)

    JavaScriptSerializer 类 为启用 AJAX 的应用程序提供序列化和反序列化功能. 命名空间:   System.Web.Script.Serialization 程序集:  Sys ...

  5. 序列化,反序列化和transient关键字

    一.序列化和反序列化的概念 序列化:指把java对象转换为字节序列的过程. 反序列化:指把字节序列恢复为java对象的过程. 对象的序列化主要有两种用途: 1) 把对象的字节序列保存到硬盘上,通常存放 ...

  6. Net中JSON序列化和反序列化处理(日期时间特殊处理)

    0  缘由 笔者最近在web api端使用Json.Net进行序列化处理,而在调用端使用DataContractSerializer进行反序列化,遇到日期时间处理反序列化不成功[备注:笔者使用Net ...

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

    [源码下载] 重新想象 Windows 8 Store Apps (60) - 通信: 获取网络信息, 序列化和反序列化 作者:webabcd 介绍重新想象 Windows 8 Store Apps ...

  8. WCF序列化与反序列化问题

    转自:http://www.cnblogs.com/wangweimutou/p/4505447.html WCF包含很多封装的内部机制,这些是我们在编写程序时不会经常看到的.比如上一篇讲解的Mess ...

  9. Rest中的XML与JSON的序列化与反序列化

    #region 获取XML的序列化和反序列化 /// <summary> /// 对象进行序列化生成XML /// </summary> /// <typeparam n ...

随机推荐

  1. iOS 字典自动生成模型

    在实际开发中,我们经常需要根据字典来建模型.每次都打那么一串代码,想想也是挺恶心的.可以自己给NSDictionary写一个分类,进行属性生成. NSDictionary+Property.h #im ...

  2. iOS YSMine 通用设置

    概述 我们在开发的过程中,经常需要重复的写个人中心设置的代码,很多情况下,我们都是通过if(indexPath.row)来判断操作以及要跳转的页面,这样的情况是非常不友好的,尤其是当我们需要调整显示顺 ...

  3. 通过实验窥探javascript的解析执行顺序

    简介 javascript是一种解释型语言,它的执行是自上而下的.但是各浏览器对于[自上而下]的理解是有细微差别的,而代码的上下游也就是程序流对于程序正确运行又是至关重要的.所以我们有必要深入理解js ...

  4. intellij代码跳转后跳回

    跳转快捷键: ctrl+b 跳回的快捷键默认为 ctrl+alt+left 然而在我的电脑上并没有卵用,所以自己设置回退的快捷键,设置位置为: File/Setting/Keymap 选择 Main ...

  5. iframe父子页面调用小结

     子页面调用父页面 $('#Id', window.parent.document); //调用父页面元素 window.parent.func1(); //调用父页面方法  (子页面同理,需将js方 ...

  6. php header函数详解

    客户机的请求方式格式:是统一资源标识符.协议版本号,后边是MIME信息包括请求修饰符.客户机信息和可能的内容!服务器响应格式:一个状态行包括信息的协议版本号.一个成功或错误的代码,后边是MIME信息包 ...

  7. 如何管理和记录 SSIS 各个 Task 的开始执行时间和结束时间以及 Task 中添加|删除|修改的记录数

    开篇语 在这篇日志中 如何在 ETL 项目中统一管理上百个 SSIS 包的日志和包配置框架 我介绍到了包级别的日志管理框架,那么这个主要是针对包这一个层级的 Log 信息,包括包开始执行和结束时间,以 ...

  8. Linux/Unix 怎样找出并删除某一时间点的文件(转)

    在Linux/Unix系统中,我们的应用每天会产生日志文件,每天也会备份应用程序和数据库,日志文件和备份文件长时间积累会占用大量的存储空间,而有些日志和备份文件是不需要长时间保留的,一般保留7天内的文 ...

  9. 推荐几款API文档集合工具

    https://zealdocs.org/    开源.免费,支持Linux.Windows http://velocity.silverlakesoftware.com/  https://kape ...

  10. 屏蔽iOS10模拟器海量的垃圾debug信息

    屏蔽iOS10模拟器海量的垃圾debug信息 不屏蔽之前 进行如下设置 OS_ACTIVITY_MODE = disable 即可屏蔽垃圾信息