как вызвать метод класса из другого appDomain - PullRequest
8 голосов
/ 02 октября 2010

мое приложение хочет вызвать метод класса из другого AppDomain.

       AppDomain env = AppDomain.CreateDomain(
            "test",
            null,
            new AppDomainSetup() { ApplicationName = "test" }
            );

        Assembly a = Assembly.LoadFrom("d:\\testenv1\\test2.dll");
        //env.AssemblyResolve += new ResolveEventHandler(env_AssemblyResolve);
        env.Load(a.FullName);

        ObjectHandle o = env.CreateInstance(a.FullName, "Test2.Class1");

Теперь у меня есть дескриптор объекта Test2.Class1, но я не знаю, как вызвать "Метод action "класса Class1.

методу« action »нравится это:

    public void action()
    {
        Console.WriteLine(AppDomain.CurrentDomain.FriendlyName + " ok");
    }

Я пытался использовать метод o.unwrap () для получения ссылки на объект, нокажется, что объект был перенесен в текущий домен, поэтому при выводе метода "action" печатается имя текущего домена.

1 Ответ

5 голосов
/ 02 октября 2010

Отметьте объект, который вы хотите использовать для связи между доменами, как MarshalByRefObject .

...