На мой взгляд, существует много способов преодоления такой проблемы.
Прежде всего, зачем вашей доменной модели нужен доступ к другим доменным моделям?
a) Для создания более сложной модели домена ==> Эта модель домена может быть пользовательской в слое Service для создания ViewModel. ==> Эта viewModel будет возвращена клиенту.
В этом случае сборка должна принимать участие на вашем уровне обслуживания, а не на уровне домена. Другими словами, отправьте некоторый запрос вашей доменной модели и смежным сервисам, получите от них результат, скомпонуйте их вместе в определенной ViewModel и, наконец, верните результат клиенту.
б) Ваша модель домена отвечает за проверку некоторых бизнес-правил. Предположим, что некоторые из них будут проверены в других системах, и поэтому вы приняли решение о доступе к смежным системам в модели вашего домена.
Учитывая, что ответственность за вашу модель домена - принадлежит вашей системе - это точно проверка некоторых правил, касающихся вашей системы, а не всего, что находится за ее пределами. Я имею в виду, что ваша модель домена не должна иметь доступа к доменам других систем. Это делает некоторую зависимость между этими системами. Это не очень хороший подход, основанный на сервис-ориентированной архитектуре. Это против слабосвязанной конструкции. Вместо этого вы должны организовать между этими системами на вашем уровне обслуживания. Сервисный уровень отправляет некоторый запрос в разные системы и получает от них ответ. Теперь окончательное решение будет принято по общему результату.