首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >AppDomain.CreateInstance

AppDomain.CreateInstance
EN

Stack Overflow用户
提问于 2009-03-20 14:10:40
回答 3查看 4.3K关注 0票数 1

当我们使用AppDomain.CreateInstance(“程序集名称”,类型名称),并且我的类继承自MarshalByRefObject时,内部会发生什么?它是在创建TransparetnProxy吗?

代码:

代码语言:javascript
复制
class Greet : MarshalByRefObejct
{
  ...
}

class test
{
 public static void Main(string[] args)
 {
   AppDomain ad = AppDomain.CreateDomain("Second");
   ObjectHandle hObj = ad.CreateInstance("Test", args[0]);
  ....
 }
}

传入args = Greet

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2009-03-20 14:16:50

是的,它创建了一个透明的代理,你可以通过展开对象句柄来获得它。

我发现和一般的MarshalByRefObject documentation一样,documentation and example for ObjectHandle.Unwrap的信息量也很大。

票数 3
EN

Stack Overflow用户

发布于 2009-03-20 14:17:56

是。

您可能还想看看CreateInstanceAndUnwrap。如果Main和Greet类中的代码共享一个公共接口,则可以使用TransparentProxy将hObj强制转换为接口并调用接口上的方法。

票数 1
EN

Stack Overflow用户

发布于 2012-04-27 21:46:57

AppDomain.CoCreateInstance()接受两个参数,即哪个程序集和它们的类型名称。

它返回一个ObjectHandle,用于在程序集中创建指定类型的实例,并提供句柄,wrap(serialized)在实例化和需要时通过该句柄返回到真正的Proxy

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

https://stackoverflow.com/questions/666301

复制
相关文章

相似问题

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