从 appdomain 中解包不可序列化的类

Posted

技术标签:

【中文标题】从 appdomain 中解包不可序列化的类【英文标题】:Unwrapping a non-serializable class from an appdomain 【发布时间】:2011-08-31 14:20:07 【问题描述】:

因为并非我要实例化的类中使用的所有类都是可序列化的,所以我无法解包。

这可能吗?

var appdom = AppDomain.CreateDomain(amServiceable.GetType().ToString());
var objectHandle = appdom.CreateInstance(amServiceable.GetType().Assembly.FullName, 
                                         amServiceable.GetType().FullName);


var plugin = objectHandle.Unwrap() as IPlugin //throws an error. that some class in not marked serializable.

【问题讨论】:

【参考方案1】:

为了在对象上使用Unwrap 方法,它必须从MarshalByRefObject 派生。如果您要操作的对象没有,那么唯一的其他选择是使用不同的MarshalByRefObject 来操作其他域中的对象

【讨论】:

以上是关于从 appdomain 中解包不可序列化的类的主要内容,如果未能解决你的问题,请参考以下文章

如何从字节数组元素中解包/提取低阶和高阶值

从 RDD 中的元组中解包项目时出现 Spark 错误

使用 Ruby 从二进制字符串中解包一点

无法在 JBoss EAP 6 中解包 TmesTen 数据源 JDBC 对象

ValueError:没有足够的值来解包(预期为 2,得到 1)当试图在 python 中解包 dict 以使用 pandas 进行数据标记时

在python中解包元素