Самый простой способ сделать кросс-апдомен?

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

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

Ответ 1

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

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

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

Ответ 2

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