zoukankan      html  css  js  c++  java
  • DataContractSerializer序列化与反序列化遇到的奇怪问题

    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);
                }
            }
  • 相关阅读:
    SVN 安装 使用指南
    使用angular-cli快速搭建项目命令
    angular 路由的引用
    c#默认类的修饰符。
    c#
    js改变dom对象样式
    jquery常用函数
    PHP 文件上传
    php 表单代码
    Python 条件语句
  • 原文地址:https://www.cnblogs.com/jackhuclan/p/4024707.html
Copyright © 2011-2022 走看看