乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
查看: 136|回复: 9

对象反系列化问题

[复制链接]

10

主题

20

帖子

3

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
60
发表于 2008-9-3 23:14:00 | 显示全部楼层 |阅读模式
将一对象系列化后存储在一文件中,在应用程序类型为Windows程序的情况下,读文件将该对象反系列化可以成功。但在应用程序类型为类库的情况下,通过调用对象反系列化进行反系列化时提示如下错误:
System.Runtime.Serialization.SerializationException: 无法找到程序集
               
HSCad_Beam, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
其实HSCad_Beam.dll已经加载了。
请高手赐教!谢谢!
回复

使用道具 举报

29

主题

503

帖子

8

银币

中流砥柱

Rank: 25

铜币
619
发表于 2008-9-4 11:34:00 | 显示全部楼层
不要用filestream,序列化用streamwriter,反序列化用streamreader
回复

使用道具 举报

10

主题

20

帖子

3

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
60
发表于 2008-9-4 22:16:00 | 显示全部楼层
序列化时通过BinaryFormatter调用Public Sub Serialize(ByVal serializationStream As System.IO.Stream, ByVal graph As Object)
     成员属于: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
摘要:
将对象或具有指定顶级(根)的对象图形序列化为给定流。
参数:
serializationStream: 图形要序列化为的流。 -----不是streamwriter
graph: 位于要序列化图形的根位置的对象。
反序列化时通过BinaryFormatter调用Public Function Deserialize(ByVal serializationStream As System.IO.Stream) As Object
     成员属于: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
摘要:
将指定的流反序列化为对象图形。
参数:
serializationStream: 要从其中反序列化对象图形的流。 ----不是streamreader
回复

使用道具 举报

29

主题

503

帖子

8

银币

中流砥柱

Rank: 25

铜币
619
发表于 2008-9-5 02:21:00 | 显示全部楼层
你不要给我抄一堆东西,那些东西我也有!~~~~~~
我不知道你要序列化什么,反正我自己的测试中就是使用filestream出错,后来改成streamwriter和streamreader成功
下面是我的程序的一部分,是把我自定义的类实例序列化保存到文件中去的
  1. '读取配置
  2.         '类库路径
  3.         Dim Path As String = GetDirectoryName(Reflection.Assembly.GetExecutingAssembly.Location)
  4.         '打开配置文件流
  5.         Dim fsOptionFile As New StreamReader(Path & "\YH_Option.dat")
  6.         '建立序列化对象
  7.         Dim xsOption As New XmlSerializer(GetType(YH_Options))
  8.         '将配置序列化并保存到配置文件中
  9.         Options = CType(xsOption.Deserialize(fsOptionFile), YH_Options)
  10.         '关闭配置文件流
  11.         fsOptionFile.Close()
  1.   '类库路径
  2.             Dim Path As String = GetDirectoryName(Reflection.Assembly.GetExecutingAssembly.Location)
  3.             '打开配置文件流
  4.             Dim fsOptionFile As New StreamWriter(Path & "\YH_Option.dat")
  5.             '建立序列化对象
  6.             Dim xsOption As New XmlSerializer(GetType(YH_Options))
  7.             '将配置序列化并保存到配置文件中
  8.             xsOption.Serialize(fsOptionFile, Options)
  9.             '关闭配置文件流
  10.             fsOptionFile.Close()

回复

使用道具 举报

29

主题

503

帖子

8

银币

中流砥柱

Rank: 25

铜币
619
发表于 2008-9-5 02:22:00 | 显示全部楼层
序列化的方式有三种,我选的是xml命名空间的
如果你不愿意把你的代码贴出来,那没办法~~~~~~~~~~
回复

使用道具 举报

10

主题

20

帖子

3

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
60
发表于 2008-9-5 12:20:00 | 显示全部楼层
哈哈,得罪得罪!
我用的是BinaryFormatter,现在把源文件传上,你帮忙看下。谢谢!
主要问题如下:
直接用Form1启动程序时系列化及反系列化都正常,利用CAD来启动Form1进行反系列化时出现异常:
System.Runtime.Serialization.SerializationException: 无法找到程序集
  
UserNameInfo, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
回复

使用道具 举报

10

主题

20

帖子

3

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
60
发表于 2008-9-5 12:30:00 | 显示全部楼层
请点击此处下载

请先注册会员后在进行下载

已注册会员,请先登录后下载

文件名称:5av45qcu2f0.rar 
下载次数:0  文件大小:10.56 KB  售价:2银币 [记录]
下载权限: 不限 以上或 Vip会员   [开通Vip]   [签到领银币]  [免费赚银币]

回复

使用道具 举报

29

主题

503

帖子

8

银币

中流砥柱

Rank: 25

铜币
619
发表于 2008-9-5 17:38:00 | 显示全部楼层
还是2楼那句话,把
Dim stream As FileStream = New FileStream("C:\Documents and Settings\All Users\桌面\Jm.Dat", FileMode.Create, FileAccess.Write, FileShare.None)
中的filestream换掉
还有一个文件不能存多个序列化对象的,如果要序列化多个对象,应该把他们组合成数组,然后序列化数组
回复

使用道具 举报

10

主题

20

帖子

3

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
60
发表于 2008-9-9 10:26:00 | 显示全部楼层
但直接用Form1启动程序时系列化及反系列化都正常,只是利用CAD来启动Form1进行反系列化时出现异常,我就是不太明白这方面的原因。
回复

使用道具 举报

29

主题

503

帖子

8

银币

中流砥柱

Rank: 25

铜币
619
发表于 2008-9-9 18:43:00 | 显示全部楼层
这是FileStream的bug
回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2025-3-13 13:15 , Processed in 0.519527 second(s), 77 queries .

© 2020-2025 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表