DataContractSerializer序列化与反序列化遇到的奇怪问题
2014-10-14 16:39
387 查看
[align=left]private static void Serialize1(string filename, object obj)[/align][align=left] {[/align][align=left] var stream = new FileStream(filename, FileMode.OpenOrCreate);[/align][align=left] var serializer = new DataContractSerializer(typeof (PackageManifest));[/align][align=left] serializer.WriteObject(stream, obj);[/align][align=left] stream.Close();[/align][align=left] }[/align][align=left]
[/align][align=left]当用以上方法,序列化一个对象后,用下面的反序列方法,发现有的文件居然不能反序列化,(PackageManifest 里面没有特殊对象,不然不会有的可以序列化,而有的不可以)[/align][align=left]
[/align][align=left] private PackageManifest Deserialize( string manifestFilePath)[/align][align=left] {[/align][align=left] try[/align][align=left] {[/align][align=left] var serializer = new DataContractSerializer(typeof (PackageManifest ));[/align][align=left] var stream = new FileStream(manifestFilePath, FileMode.Open, FileAccess .Read);[/align][align=left] var manifestObject = serializer.ReadObject(stream) as PackageManifest;[/align][align=left] stream.Close();[/align][align=left] return manifestObject;[/align][align=left] }[/align][align=left] catch ( Exception ex)[/align][align=left] {[/align][align=left] return null;[/align][align=left] }[/align][align=left] }[/align][align=left]
[/align][align=left]然而,当我用格式化工具,将Serialize1序列化的对象格式化后,再来调用反序列化居然又可以了。 于是找到一个办法,Serialize的时候直接输出格式化的xml就没有问题了。[/align][align=left]
[/align][align=left]
[/align][align=left]private static void Serialize2(string filename, object obj)[/align][align=left] {[/align][align=left] var ds = new DataContractSerializer(typeof (PackageManifest ));[/align][align=left] var settings = new XmlWriterSettings { Indent = true };[/align][align=left] using ( var writer = XmlWriter.Create(filename, settings))[/align][align=left] {[/align][align=left] ds.WriteObject(writer, obj);[/align][align=left] }[/align][align=left] }[/align]
[/align][align=left]当用以上方法,序列化一个对象后,用下面的反序列方法,发现有的文件居然不能反序列化,(PackageManifest 里面没有特殊对象,不然不会有的可以序列化,而有的不可以)[/align][align=left]
[/align][align=left] private PackageManifest Deserialize( string manifestFilePath)[/align][align=left] {[/align][align=left] try[/align][align=left] {[/align][align=left] var serializer = new DataContractSerializer(typeof (PackageManifest ));[/align][align=left] var stream = new FileStream(manifestFilePath, FileMode.Open, FileAccess .Read);[/align][align=left] var manifestObject = serializer.ReadObject(stream) as PackageManifest;[/align][align=left] stream.Close();[/align][align=left] return manifestObject;[/align][align=left] }[/align][align=left] catch ( Exception ex)[/align][align=left] {[/align][align=left] return null;[/align][align=left] }[/align][align=left] }[/align][align=left]
[/align][align=left]然而,当我用格式化工具,将Serialize1序列化的对象格式化后,再来调用反序列化居然又可以了。 于是找到一个办法,Serialize的时候直接输出格式化的xml就没有问题了。[/align][align=left]
[/align][align=left]
[/align][align=left]private static void Serialize2(string filename, object obj)[/align][align=left] {[/align][align=left] var ds = new DataContractSerializer(typeof (PackageManifest ));[/align][align=left] var settings = new XmlWriterSettings { Indent = true };[/align][align=left] using ( var writer = XmlWriter.Create(filename, settings))[/align][align=left] {[/align][align=left] ds.WriteObject(writer, obj);[/align][align=left] }[/align][align=left] }[/align]
相关文章推荐
- 【MySQL5.0】Load data infile 时遇到的奇怪问题
- XML序列化与REST WCF Data Contract匹配时遇到的2个问题
- 今天遇到的一个奇怪的vb.net问题
- Hibernate遇到的奇怪问题的解决
- 静态库编译和连接遇到的奇怪问题
- IIS访问WEB遇到 System.Data.OracleClient 需要 Oracle 客户端软件 8.1.7 或更高版本。问题解决方案。
- 在Tomcat上运行Web程序时遇到的一个奇怪问题.
- 今天遇到一个奇怪的问题!!无奈搞了半天也没解决,难道非要重装
- sqlldr遇到的奇怪问题
- MOSS2007使用中遇到的奇怪问题
- 遇到的Opera 奇怪问题
- sqlldr遇到的奇怪问题
- 序列化遇到的小问题
- 奇怪的SqlDataAdapter.Update(Dataset)问题....请高手进来帮忙搞定
- 数据库更新的时候遇到的奇怪问题,原来是UPDATE里的顺序问题
- 使用myEclipse开发JSP时遇到的奇怪问题
- 谁有CDMA手机的AT指令集啊?连电脑遇到的奇怪问题。Gselec@163.com
- 遇到个奇怪的问题,查询出来的数据不对
- 日期格式化的时候遇到的奇怪的问题
- 今天遇到了一个奇怪问题