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

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

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

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

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

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

метод "действие" любит это:

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

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

1 ответов


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