首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Activator.GetObject - MarshalByRefObject

Activator.GetObject - MarshalByRefObject
EN

Stack Overflow用户
提问于 2008-11-06 21:46:55
回答 1查看 2.7K关注 0票数 1

在.Net中,Activator.GetObject(类型类型,字符串url,对象数据)返回对象的代理。我猜这个代理继承自MarshalByRefObject,可以通过AppDomains发送。我说的对吗?

在我的应用程序中,我在appdomain A中创建了一个对象并使用了appdomain B。该对象的成员是使用Activator.GetObject ()创建的代理对象。因此,当我在AppDomain B中时,我有一个到appdomain A中创建的对象的透明代理。当我试图在代理对象上执行调用该方法时,我遇到了错误。

例如,我在App Domain B中创建了一个Connection对象。我在App Domain A中为Connection对象创建了透明代理。当我尝试从AppDomain A.进行这样的调用时,遇到了错误。看起来问题在于,当我尝试进行类似上面的调用时,它尝试在AppDomain A中再次创建SecurityProxy,而不是将调用转发到AppDomain B。在创建connection对象时,已经在AppDomain B中创建了安全代理。

你能帮我找出我做错了什么吗?

问候你,阿尼尔。

EN

回答 1

Stack Overflow用户

发布于 2010-06-19 23:46:57

假设SecurityProxy是ConnectionObject上的一个属性...

您正在处理域A中的ConnectionObject代理。方法调用被转发到域B,在域B中执行,并将结果返回到域A。

属性是一种编译器技巧。它使两个方法get_X和set_X看起来像是一个字段。

因此,当您调用"ConnectionObject.SecurityProxy“时,您调用的是一个跨应用程序域边界返回SecurityProxy实例的方法。

您必须做以下两件事中的一件:创建并解包SecurityProxy的实例并将其交给ConnectionObject,或者将ConnectionObject转换为只公开方法且只返回您绝对知道可以安全跨越应用程序域边界的类型/参数的外观。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/270427

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档