Home » Archive by category ".Net技术"

Archive for the '.Net技术' Category

[未找到反序列化“XXX”类型对象的构造函数。]的解决办法

出现[未找到反序列化“XXX”类型对象的构造函数。]错误一般是由于要反序列化的类或者它的父类(如:继承了Dictionary类)实现了ISerializable接口而没有序列化构造函数,这时候只要把序列化构造函数加上去就可以反序列化了。需要注意的是,一个类或者它的父类实现ISerializable接口就表示启用了自定义序列化,需要按照自定义序列化的规则编写序列化构造函数和GetObjectData函数,像下面的两个例子。

使用ICSharpCode.SharpZipLib在现有Zip文件中添加文件的方法

ICSharpCode.SharpZipLib是一个操作压缩文件的类库。网上使用这个类库在Zip文件中添加文件的方法主要都是使用ZipOutputStream类在Zip中添加文件,可是使用这种方法有个很大的缺点,就是会把Zip文件原有的内容覆盖掉,只适合新建Zip文件。昨天需要把内存中的内容写到一个Zip文件中的一个文件里,所以研究了一下,发现ZipFile.Add方法可以满足这个需求,这个方法有8个重载,我用的是void Add(IStaticDataSource,string)这个重载。

时区设置错误导致DateTime序列化异常

公司目前在做一个项目,这个项目有一个服务端和若干个客户端,服务端主要功能就是是根据客户端提供的参数从数据库查询数据放到DataTable里,并把DataTable序列化后传给客户端,客户端接到数据以后显示出来。 今天做这个项目的时候遇到一个非常奇怪的问题,就是服务端从数据库里查出来的DateTime数据在服务端是正常的,传到客户端后全部都多了8个小时,而如果由客户端直接查数据的话,得出的结果是正确的。后来看了一下服务端和客户端的时区,发现服务端的时区是GMT,客户端的时区时区是GMT+8,把时区调成一样后恢复正常。