Циркулярная ссылка между двумя сборками .net

У меня есть две сборки A и B.

A есть референт сразу к B, и это должно быть сохранено. Прямо сейчас я внес некоторые изменения в B, которые должны ссылаться на A. Так происходит циклическая ссылка.

Немного деталей:

A имеет несколько сеток свойств, которые необходимо разместить в диалоговом окне B. Поэтому, чтобы избежать этой проблемы с циклическими ссылками, я попытался определить интерфейсы к сеткам в третьей сборке, на которые ссылаются A и B, а сделать B относится только к интерфейсам.

Две проблемы, с которыми я столкнулся:

  1. слишком много настраиваемых типов данных (чтобы быть конкретными свойствами) внутри сеток, которые определены внутри A, и я должен определить интерфейсы для каждого из них.

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

    object = new CustomPropertyGridWrapper (...)
    m_property .SelectedObject = объект;

7
задан Charles 16 September 2013 в 18:14
поделиться

4 ответа

Для проблемы 1 на самом деле нет другого решения, кроме объединения двух проектов или генерации кода

Во втором случае вы можете сделать это, реализовав шаблон проектирования Factory.

1
ответ дан 7 December 2019 в 07:38
поделиться

Похоже, вы пытаетесь умереть через интерфейс. Не все должно быть доступно через интерфейс.

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

3
ответ дан 7 December 2019 в 07:38
поделиться

Если теперь B зависит от битов A, возможно, вам следует реорганизовать эти биты в новую сборку C, на которую будут ссылаться как A, так и B.

0
ответ дан 7 December 2019 в 07:38
поделиться

Выполните рефакторинг кода или объедините сборки = не используйте циклические ссылки. Это признак очень плохого дизайна.

0
ответ дан 7 December 2019 в 07:38
поделиться
Другие вопросы по тегам:

Похожие вопросы: