AppDomain.CreateInstance - PullRequest
       6

AppDomain.CreateInstance

1 голос
/ 20 марта 2009

Когда мы использовали AppDomain.CreateInstance («Имя сборки», Имя типа) и мой класс наследуется от MarshalByRefObject что происходит внутри? Это создает TransparetnProxy?

Код:

class Greet : MarshalByRefObejct
{
  ...
}

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

передает аргументы [0] = Приветствую

Ответы [ 3 ]

3 голосов
/ 20 марта 2009

Да, он создает прозрачный прокси, который вы получаете, разворачивая дескриптор объекта.

Я считаю документацию и пример для ObjectHandle.Unwrap довольно информативным, как и общая документация MarshalByRefObject .

1 голос
/ 27 апреля 2012

AppDomain.CoCreateInstance() принимает два аргумента та, какая сборка и имя их типа.

И он возвращает ObjectHandle, используемый для создания экземпляра указанного типа в сборке, а также предоставляет дескриптор, с помощью которого wrap(serialized), когда он создается и когда это необходимо, тогда unwrap(deserialized) возвращается к реальному Proxy.

1 голос
/ 20 марта 2009

Да.

Возможно, вы также захотите взглянуть на CreateInstanceAndUnwrap . Если ваш код в классе Main и классе Greet используют один и тот же интерфейс, вы можете привести hObj в свой интерфейс и вызывать методы, используя TransparentProxy.

...