Какой лучший способ предоставить определение интерфейса другим в C #? - PullRequest
4 голосов
/ 29 мая 2011

Мне кажется вероятным получить согласованный наилучший ответ, но, похоже, я нигде не могу его найти.

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

Пока лучшее, что я придумал, это следующее:

Прикладное решение, которое содержит: Проект, который содержит только определение интерфейса и компилируется в dll. Проект для приложения, которое использует интерфейс и ссылается на dll.

Отдельное решение для примера реализации, которое собирает в dll и ссылается на интерфейс dll.

Это лучший способ сделать это? т.е. распространять скомпилированную версию интерфейса всем, кому требуется реализовать интерфейс.

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

Ответы [ 2 ]

3 голосов
/ 29 мая 2011

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

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

в противном случае просто поделиться всем проектом, содержащим интерфейс

0 голосов
/ 29 мая 2011

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

Альтернативный подход -использовать структуру управляемого расширения: http://msdn.microsoft.com/en-us/library/dd460648.aspx - но это может быть излишним для небольшого проекта.

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