反射加载的类反序化时无法找到程序集
时间:2011-12-21
来源:互联网
客户端设计了一个插件功能,需要用反射动态加载程序集,该程序集中的一个类需要序列化到服务器端再执行某个方法。
由于该类为动态加载的类,服务端所引用的程序集中找不到此类,所以在反序列化时就会抛出“无法找到程序集”的异常。
请问针对这种情况有什么办法解决呢?
作者: breadjyh 发布时间: 2011-12-21
----------------
?
作者: Sandy945 发布时间: 2011-12-21
2.在反序列化使用的IFormatter 对象加入Binder 属性,使其获取要反序列化的对象所在的程序集,示例如下:
public void DeSerialize( byte [] data, int offset)
{
IFormatter formatter = new BinaryFormatter();
formatter.Binder = new UBinder();
MemoryStream stream = new MemoryStream(data, offset, stringlength);
this .m_bodyobject = ( object )formatter.Deserialize(stream);
}
public class UBinder:SerializationBinder
{
public override Type BindToType( string assemblyName, string typeName)
{
Assembly ass = Assembly.GetExecutingAssembly();
return ass.GetType(typeName);
}
}
作者: happy09li 发布时间: 2011-12-21
2.序列化不是用代码实现的,是给类加上了序列化特性,由.net自动完成的序列化及反序列化,所以这个方法也不可取
作者: breadjyh 发布时间: 2011-12-21
另外当我把反射加载的程序集放到bin文件夹下的时候即使没有引用的程序集也可以反序列化成功(以前客户端的程度集有一部份没放到bin文件夹下为了更新程序集保持路径一致服务器端也放到bin文件夹外)
作者: breadjyh 发布时间: 2011-12-22
作者: hdt 发布时间: 2011-12-22
该回复于2011-12-22 09:46:12被管理员删除
- 对我有用[0]
- 丢个板砖[0]
- 引用
- 举报
- 管理
- TOP
|
#7楼 得分:0回复于:2011-12-22 09:21:52
|
作者: ruanwei1987 发布时间: 2011-12-22
http://hi.baidu.com/my_responsibility/album/c%23%20sqlforever%20%A1%AA%A1%AA2011%CD%F5%C5%C6%CF%EE%C4%BF%D6%AE%D2%BB
http://hi.baidu.com/my_responsibility/album/c%23%20webcreate%202.5%20%A1%AA%A1%AA2011%CD%F5%C5%C6%CF%EE%C4%BF
——这两个项目 ,右键菜单,导航栏,工具栏,子窗体 都是用插件的形式扩展出来的;
都是序列化保存和反序列化加载——没有任何问题!!!
到目前为止,我还没有遇到 反序列化的问题!!!
作者: sxl514286339 发布时间: 2011-12-22
作者: sxl514286339 发布时间: 2011-12-22
但是不管是什么程序,你的服务端都没有那个类,你就像 反序列化这个类对象;
——不可能吧!!
换言之,客户端的所有插件——服务端也一个都不能少吧!!!
作者: ysixin 发布时间: 2011-12-22
(程序集肯定不少的)
作者: sxl514286339 发布时间: 2011-12-22
作者: breadjyh 发布时间: 2011-12-22
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28