2015-05-24 3 views
0

У меня есть графический интерфейс и служба Windows, которым необходимо разделить model (классы POCO). Как это сделать?Два кода совместного использования проектов C#

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

  • Это хороший вариант?
  • Какой проект должен содержать эти классы?
  • Что происходит за кулисами при создании исполняемого файла?
+2

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

+0

Спасибо, @ Филбурт! – Elimination

ответ

5

В общем, вы бы создать структуру проекта следующим образом:

  • MyProject.DataModel
  • MyProject.Gui
  • MyProject.WindowsService

ГИП и WindowsService может одновременно имеют ссылки на проект DataModel, и в этом случае изменения в DataModel немедленно подбираются обоими при компиляции.

При компиляции в EXE у вас будут библиотеки DLL в том же каталоге, который будет MyProject.DataModel.dll. EXE загрузит эту DLL во время выполнения, чтобы обеспечить доступ к этим классам.

+0

Спасибо Мартин – Elimination

+0

Добро пожаловать! :) –

2

Если два проекта имеют один и тот же код, полезно сделать ссылку на третий проект с общим кодом. Таким образом, в основном создайте новый проект «Модель» с вашим poco.

Почему это нехорошо добавить один проект в качестве ссылки? Для GUI, вероятно, не нужен весь проект Windows Services. То же самое происходит наоборот. Для служб Windows не нужен графический интерфейс.

Смежные вопросы