Я хочу расширить ответ xOn. Он рекомендует использовать либо WCF, либо MarshalByRefObject, но, учитывая, что вопрос касается связи между доменами приложений, а не связи между процессами, я думаю, что подход MBRO значительно проще в реализации и, следовательно, правильный ответ.
Когда я сам исследовал эту проблему, я сначала пытался понять, как дочерний домен AppDomain мог общаться с родителем, пока не понял, что вы можете передать дескриптор объекта MBRO в дочерний объект, а потом ребенок может развернуть его. этот дескриптор для связи с родителем (или любым другим AppDomain). Я отправил решение моего собственного вопроса здесь .
Впоследствии я узнал, что вы можете определить интерфейс, реализовать этот интерфейс в сложном классе, а затем передать дескриптор только интерфейсу. Это может значительно уменьшить количество сборок, которые могут потребоваться для загрузки дочернего домена приложений.