从应用程序域中解包不可序列化的类

发布于 2024-12-02 19:27:55 字数 427 浏览 1 评论 0原文

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

这可能吗?

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.

Because not all the classes used in the class I want to instantiate are serializable I can't unwrap.

Is this possible?

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.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

哎呦我呸! 2024-12-09 19:27:55

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

In order to use the Unwrap method on an object it must derive from MarshalByRefObject. If the object you want to manipulate doesn't then the only other choice is to use a different MarshalByRefObject to manipulate the object in the other domain

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文