C#中对DataSet序列化和序列化

问题描述

需求如下:在DataSet中对Table的Column使用DataColumn的子类(DataColumnEx)用于保存一些特殊信息,同时这个DataSet会被序列化到本地,但将保存的信息反序列化为DataSet时,使用DataColumnEx保存的信息无法成功读取。请教大神们如何,在这种情况下怎样才能将信息正确反序列化为DataColumnEx,usingSystem;usingSystem.Collections.Generic;usingSystem.Linq;usingSystem.Text;usingSystem.Data;usingSystem.IO;usingSystem.Runtime.Serialization.Formatters.Binary;namespacePromTest{classProgram{staticvoidMain(string[]args){DataSetds=newDataSet();DataTabletable=newDataTable("tab1");ds.Tables.Add(table);table.Columns.Add(newDataColumnEx(){ItemCategory="测试"});BinSerialize(ds);objectobj=BinDeserialize();if(((DataSet)obj).Tables[0].Columns[0]isDataColumnEx){Console.WriteLine((((DataSet)obj).Tables[0].Columns[0]asDataColumnEx).ItemCategory);}Console.Read();}staticvoidBinSerialize(objectinfo){using(Streamstream=newFileStream("a.bin",FileMode.Create,FileAccess.Write)){BinaryFormatterbf=newBinaryFormatter();bf.Serialize(stream,info);}}staticobjectBinDeserialize(){using(Streamstream=newFileStream("a.bin",FileMode.Open,FileAccess.Read)){BinaryFormatterbf=newBinaryFormatter();returnbf.Deserialize(stream);}}}publicclassDataColumnEx:DataColumn{publicstringItemCategory{get;set;}}}

解决方案

解决方案二:
自己先顶,走过的大神看过来
解决方案三:
谁知道怎么就叫做“无法成功读取”?你真的是懒得贴出异常信息么?
解决方案四:
大神路过了了
解决方案五:
引用2楼sp1234的回复:

谁知道怎么就叫做“无法成功读取”?你真的是懒得贴出异常信息么?

说明下:“无法成功读取”不是什么异常信息,而是在使用DataSet情况下序列化时使用DataColumnEx的对象信息,但在反序列化时却只能是DataColumn对象,原来属于DataColumnEx的"ItemCategory"信息没有了,不明白的可以先卸下我贴出来的代码,明白我的意图哈。
解决方案六:
再不明白可以把序列化的a.bin打开看下,再看反序列化的DataSet是什么样的

时间: 2024-09-13 21:43:25

C#中对DataSet序列化和序列化的相关文章

在 WCF 中使用高效的 BinaryFormatter 序列化

本文将定义一个 WCF 终结点行为扩展,以在 WCF 中使用更高效的 BinaryFormatter 进行二进制序列化,并实现对是否使用传统二进制序列化功能的可配置. 介绍 实现步骤 使用方法 效果   介绍 在 OEA 框架中,是使用 WCF 作为数据传输框架.但是使用 WCF 内部的二进制序列化,序列化后的数据大小,要比使用传统的 System.Runtime.Serialization.Formatters.Binary.BinaryFormatter 类进行序列化后的数据大小要大得多.作

Asp.Net Web API 2第十三课——ASP.NET Web API中的JSON和XML序列化

原文:Asp.Net Web API 2第十三课--ASP.NET Web API中的JSON和XML序列化 前言 阅读本文之前,您也可以到Asp.Net Web API 2 系列导航进行查看 http://www.cnblogs.com/aehyok/p/3446289.html 本文描述ASP.NET Web API中的JSON和XML格式化器. 在ASP.NET Web API中,媒体类型格式化器(Media-type Formatter)是一种能够做以下工作的对象: 从HTTP消息体读取

【ASP.NET Web API教程】6.2 ASP.NET Web API中的JSON和XML序列化

原文:[ASP.NET Web API教程]6.2 ASP.NET Web API中的JSON和XML序列化 谨以此文感谢关注此系列文章的园友!前段时间本以为此系列文章已没多少人关注,而不打算继续下去了.因为文章贴出来之后,看的人似乎不多,也很少有人对这些文章发表评论,而且几乎无人给予"推荐".但前几天有人询问为何很久没有更新,这让我感觉把这文章翻译出来还是有价值的.为此,本人打算将此工作继续下去.这些关于Web API的技术文章均由微软专业人员撰写,虽然文章作为博客帖子而写得比较简单

十五天精通WCF——第十二天 说说wcf中的那几种序列化

原文:十五天精通WCF--第十二天 说说wcf中的那几种序列化 我们都知道wcf是由信道栈组成的,在我们传输的参数走到传输信道层之前,先需要经过序列化的过程,也就是将参数序列化为message,这篇 我们就来说说这里的序列化,蛮有意思的,可能初学者也明白,在wcf中默认的序列化是DataContractSerializer,确实是这样,不过wcf在信道中 其实不仅仅支持DataContractSerializer,它还支持其他类型的序列化,比如XmlSerializer,NetDataContr

PHP中SERIALIZE和JSON的序列化与反序列化操作区别分析_php技巧

本文实例讲述了PHP中SERIALIZE和JSON的序列化与反序列化操作区别.分享给大家供大家参考,具体如下: PHP中SERIALIZE和JSON序列化与反序列化区别是什么呢,对于这个问题我们可以和小编一起来看看,具体的操作细节如下所示. 在PHP中,serialize和json两种方式对一个对象或数组进行序列化或反序列化有什么区别呢? 假设一个对象和一个数组: $web = new stdClass; $web->site = 'tantengvip'; $web->owner = 'tu

dataset更新到数据库-C#中在Dataset中删除几行后无法更新到数据库中

问题描述 C#中在Dataset中删除几行后无法更新到数据库中 foreach (DataRow row in set.Tables["test"].Rows) { if (row[0].ToString() == textBox3.Text) { row.Delete(); } } set.AcceptChanges(); foreach (DataRow row in set.Tables["test"].Rows) { MessageBox.Show(row[

java序列化不能序列化static变量吗?为什么?能不能举个例子

问题描述 java序列化不能序列化static变量吗?为什么?能不能举个例子 java序列化不能序列化static变量吗?为什么?能不能举个例子 解决方案 你是怎么"序列化"的?如果你自己反射,并且将静态属性的变量存下来,再恢复,这个当然会改变的.但是直接对对象实例序列化是不包括静态成员的. 解决方案二: static成员不属于对象实例,没办法序列化.因为没办法,就不举例了. 解决方案三: 支持2楼解释..............

关于c++中访问dataset的问题

问题描述 关于c++中访问dataset的问题 由于需要,在基于mfc,对webservice查询,得到一个dataset格式的返回值. 但是在c++中不知道应该用什么容器储存?储存后应该怎么获取里面的信息? 在webservice中,函数格式为: getpeopleinfo( string name, ref DataSet ds1 ); 表的格式 name sex abc m 服务应该是用c#写的,但是我这边客户端不清楚怎么获取abc这个人的信息,求指导! 解决方案 直接用microsoft

c#中的DataSet深入探讨及RecordSet的比较

虽说ADO.NET是 ADO在.Net平台下得后继版本,但二者的区别是很大的.突出表现在ADO中的RecordSet对象和ADO.NET中的DataSet对象.RecordSet其实也是非常灵活的一个对象,微软公司推出它也是煞费苦心,如:RecordSet可以离线操作数据库教程,性能优良,效率较高等等这些都让当时的程序员为之一振.RecordSet虽然已经很复杂,但DataSet却比RecordSet复杂的多,我们知道每一DataSet往往是一个或多个DataTable 对象的集合,这些对象由数