Самый простой способ сделать кросс-доменный вызов? - PullRequest
11 голосов
/ 05 июня 2011

Мне нужно вызвать метод объекта в другом домене приложения (передать параметр и получить результат).Идеи?

UPD оба AppDomain создаются не моим кодом (хост-приложение создает его, а затем вызывается мой код)Как я могу получить доступ к одному домену приложений из другого?

Ответы [ 2 ]

14 голосов
/ 05 июня 2011

Если вы создали объект в другом домене, например, с помощью AppDomain.CreateInstanceAndUnwrap , все, что вам нужно для вызова объекта в другом домене, - это вызвать метод объекта.сделать вызов домена из нескольких приложений - это просто сделать вызов непосредственно для этого объекта, который фактически открывается из другого домена через его прокси, существующий в другом домене.

UPD
К сожалению, получить домен хоста не так просто.Вам следует перечислить домены типа this и найти среди них хост-домен.Я предполагаю, что ваш домен хоста является тем, для которого метод AppDomain.IsDefaultAppDomain возвращает true .

3 голосов
/ 05 июня 2011

Обычно это достигается с помощью AppDomain.DoCallBack .Вы должны убедиться, что если вы хотите передать параметры, вам нужно создать сериализуемый объект, метод которого вы передаете методу, описанному выше.В методе обратного вызова вы можете выполнить другой обратный вызов AppDomain, чтобы передать результат обратно в исходный домен AppDomain.

...