Советы / ресурсы по структурированию библиотек с общим кодом в C # / WPF? - PullRequest
2 голосов
/ 21 декабря 2010

Я написал простое настольное приложение для C # / WPF, и сейчас я хочу создать другое, более крупное приложение, которое будет использовать большую часть функциональности. Я думаю, что мне нужно создать три отдельных проекта: один, содержащий общий код, и по одному для двух приложений.

Моя проблема в том, что я не совсем знаком с .NET / WPF, поэтому я не знаю, есть ли лучшие практики для такого рода вещей. Кто-нибудь может предложить хорошие источники информации, примеры проектов или просто краткий совет?

Редактировать: Чтобы немного подробнее описать сценарий, первое приложение представляет собой специализированный редактор, а второе приложение берет этот файловый редактор и оборачивает вокруг него модель проекта для создания своего рода базовой IDE.

1 Ответ

1 голос
/ 21 декабря 2010

Честно говоря, это зависит от того, на каком уровне вы собираетесь поделиться кодом. Например, вполне возможно поместить весь код вашей бизнес-логики в одну библиотеку проекта / класса и поддерживать его независимо, но смешивать логику бизнеса с пользовательскими элементами управления WPF НАСТОЯТЕЛЬНО не рекомендуется. Подумайте о слоях абстракции, которые вы модулируете, и иерархии зависимостей, которую вы вводите, и соответственно реорганизуйте.

Edit:

В ответ на указанные выше изменения я предлагаю следующее: Логика и DAL, связанные с вышеизложенным, должны быть помещены в проект как отдельные пространства имен. Визуальные элементы (view, viewmodel), скорее всего, должны быть перемещены в отдельный проект и набор пространств имен. Как только вы сможете объединить их и запустить из exe-файла, содержащего окно хоста и UserControl для остального размещенного вами визуального контента, вы, вероятно, сможете двигаться дальше с интеграцией в ваш более крупный проект IDE. Ключ здесь:

Визуальный слой и логика просмотра -> Editor.Visual.dll

Логика бизнеса и доступ к данным -> Editor.Core.dll

Надеюсь, это поможет.

...