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. AngularJS快速入门指南08:表格

    ng-repeat指令非常适合用来显示表格. 在表格中显示数据 在AngularJS中显示表格非常容易: <div ng-app="myApp" ng-controller= ...

  2. 酷派大神F2系列使用QPST进行nv备份和恢复,解决无信号问题(附备份文件)

    测试机器: 大神F2联通版 8675_W00 系统COOLUI55     写贴原因: 自己无意间刷错了包,结果手机无信号,进入工程模式怎么设置都没有用.尝试过系统还原(备份过).刷新的ROM.线刷, ...

  3. paip.提升性能---list,arraylist,vector,linkedlist,map的选用..

    paip.提升性能---list,arraylist,vector,linkedlist,map的选用.. arraylist,vector基本一样,但是,vector线程安全的. 作者Attilax ...

  4. Exception in thread "main" java.lang.UnsupportedClassVersionError: org/apache/ma ven/cli/Maven/java与javac版本不一致问题

    编译的时候 中出现如下异常: Exception in thread "main" Java.lang.UnsupportedClassVersionError: org/apac ...

  5. Maven学习总结(四)——Maven核心概念--转载

    一.Maven坐标 1.1.什么是坐标? 在平面几何中坐标(x,y)可以标识平面中唯一的一点. 1.2.Maven坐标主要组成 groupId:组织标识(包名) artifactId:项目名称 ver ...

  6. Leetcode 292 Nim Game 博弈论

    class Solution {public:    bool canWinNim(int n) {        return n % 4 != 0;    }};

  7. curl_setopt用此函数设置上传文件请求的兼容性调整

    在用curl_setopt($curl, CURLOPT_POSTFIELDS, $fileData);这个函数设置时会报错如下 curl_setopt(): The usage of the @fi ...

  8. AutoMapper完成Dto与Model的转换

    在实际的软件开发项目中,我们的“业务逻辑”常常需要我们对同样的数据进行各种变换. 例如,一个Web应用通过前端收集用户的输入成为Dto,然后将Dto转换成领域模型并持久化到数据库中.相反,当用户请求数 ...

  9. PHP cURL模块

    简介: cURL是利用URL语法在命令行方式下工作的文件传输工具,目前苹果机器已经内置了cURL.cURL是一个综合性的传输工具,对HTTP.FTP等协议提供了广泛的支持,它甚至可以实现迅雷.快车等下 ...

  10. Cocos2dx.3x入门三部曲-Hello Game项目创建(二)

    一.前提: 完成cocos2d-x-3.x开发环境的安装配置. 具体参考:Cocos2d-x.3x_软件配置篇 二.本篇目标: l  创建一个名为hello game的cocos2dx 3.3的项目 ...