Используйте типы, на которые ссылается ссылочный проект в C # - PullRequest
1 голос
/ 27 ноября 2009

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

В качестве простого примера.

Проект автомобильных ссылок проектов, содержащих двери, радио и т. Д.

Проект гаража ссылается на проект автомобиля, но необходимо использовать радио.

Нужно ли добавить ссылку на радиопроект в гаражный проект?

Ответы [ 3 ]

3 голосов
/ 27 ноября 2009

Зависит от того, действительно ли в Garage вы напрямую ссылаетесь на типы, определенные в проекте Radio. Если да, то вам нужно создать ссылку. Если вы используете эти типы радио только в сборке Car , то тот факт, что типы автомобилей используются в гараже, Not требует от вас объявить ссылку на Радио в гараже (за исключением случаев, указанных в примечании РЕДАКТИРОВАТЬ ниже).

РЕДАКТИРОВАТЬ (на основе комментария от @Pavel): есть еще один сценарий / условие, где вам нужно сослаться на другую сборку: Если вы используете тип из ссылочной сборки, которая является производной от типа (или реализует интерфейс), определенного в третьей сборке, вам также необходимо сослаться на эту третью сборку.

3 голосов
/ 27 ноября 2009

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

0 голосов
/ 28 ноября 2009

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

Это зависит только от того, что имеет смысл для вашей системы.

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

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

Пожалуйста, имейте в виду, что пропуск уровней очень часто указывает на проблемы с абстракциями или архитектурой. (Хотя в данном конкретном случае пропуск уровней может быть не тем, что происходит.)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...