Использование части класса в нескольких проектах - PullRequest
3 голосов
/ 23 апреля 2010

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

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

Проблема заключается в том, что теперь у меня есть класс «полезности», скопированный в 8 проектов с одинаковым содержимым,в разных пространствах имен.В C / C ++ это было бы просто, потому что я просто включил бы содержимое файла там, где это было необходимо.Что мне делать в C #?

Ответы [ 2 ]

4 голосов
/ 23 апреля 2010

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

1 голос
/ 23 апреля 2010

Как говорит Джон, сборка библиотеки - хорошая идея.

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

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

Единственное ограничение - использование относительного пути для ссылки на файл.

Единственная проблема, с которой я столкнулся при этой стратегии, связана с поставщиком открытого кода Mercurial scc. При удалении связанного файла из проекта основной файл удаляется. Довольно раздражает, но это не может быть проблемой для вас.

Обновление: ошибка связанного файла в VS Mercurial SCC должна быть исправлена ​​в следующем выпуске.

...