Решение круговой зависимости между проектами C # и C ++ / CLI? - PullRequest
2 голосов
/ 12 мая 2011

У нас есть решение с рядом проектов.

В одном конкретном случае у нас есть два проекта: 1) C # проект, который выполняет большую часть работы 2) C ++ / CLI проект, который выступает посредником в некотором родном коде C ++

Код C # вызывает оболочку C ++, все хорошо.

Однако есть некоторые новые функциональные возможности, которые мы добавляем. На управляемой стороне оболочки C ++ (проект # 2) требуются некоторые статические методы в управляемом коде C #, который находится в проекте # 1. Однако Visual Studio не позволяет нам взаимно связывать эти два проекта, поскольку он жалуется на циклическую ссылку на проект. Тем не менее, нет круговой ссылки class .

Есть ли какое-либо решение этой проблемы, которое не требует третьего проекта в качестве посредника?

1 Ответ

5 голосов
/ 12 мая 2011

Вы можете иметь A в зависимости от B. Для простоты, скажем, A.EXE зависит от B.DLL.Затем, когда A первоначально вызывает B, он может дать ему объект некоторого типа или интерфейса, который определен в B, а затем B может развернуться и перезвонить в A в более поздний момент.

Другими словами, Bопределяет базовый класс или интерфейс типа «Я хочу что-то, что может сделать только А», но не реализую это.Затем пусть A реализует это, передает вам и вызывает.Это обходит круговую зависимость без третьего проекта.Это относится к любой паре управляемых проектов.

...