Наследование XML-комментариев от интерфейсов в С#

Мне было интересно, знает ли кто, как связать комментарий xml интерфейса с реализацией. Проблема в том, что я хочу, чтобы базовые комментарии поступали из моего интерфейса. Пример:

interface myinterface {

       /// <summary>
       /// Does something.
       /// </summary>
       void method1(string foo);

}

а затем реализация:

public class myclass : myinterface {


       public void method1(string foo) {
             //do something...
       }
}

Итак, теперь, если я навешиваю метод с помощью мыши после создания объекта:

myclass foo = new myclass();
foo.method1("do something");

как я могу сделать комментарии в всплывающем окне? Есть ли способ связать комментарии интерфейса с реализацией? Я знаю, что есть способ в Java, но не могу найти решение для С#.

Спасибо

Ответ 1

Связывание XML-комментариев IMHO невозможно, но вы можете использовать такой инструмент, как GhostDoc, чтобы скопировать XML Комментарий от вашего интерфейса/базового класса к классу реализации/производного.

Ответ 2

XMLDoc определяет тег <include /> для включения комментариев из другого файла, который был вокруг с Visual Studio 2003. Самый большой оговорка - это файл с файлами, содержащий только документацию XMLDoc, а не другой исходный файл.

Подробнее см. страницу MSDN.

Ответ 3

Если вы используете GhostDoc, это очень помогает в "транспортировке" документации с интерфейсов на код реализации.

Ответ 4

http://blog.x-tensive.com/2008/02/fixml.html

Это постпроцессор с некоторыми дополнительными параметрами, в которых отсутствует исходная система документации.

С веб-сайта:

Краткое резюме:

FiXml является пост-процессором документации XML, созданной С#\Visual Basic.Net. В нем рассматриваются некоторые из наиболее неприятных случаев, связанных с написанием документации XML на этих языках: - Нет поддержки для наследования документации из базового класса или интерфейса. То есть документация для любого переопределенного элемента должна быть написана с нуля, хотя обычно ее вполне желательно унаследовать, по крайней мере, ее часть. - Нет поддержки для вставки обычно используемых шаблонов документации, таких как "Этот тип singleton - использует его свойство, чтобы получить единственный экземпляр этого файла", или даже "Инициализирует новый экземпляр класса".

Ответ 5

Я построил инструмент командной строки для последующей обработки файлов документации XML, добавляя поддержку для < inheritdoc/ > тег.

Хотя он не помогает с Intellisense в исходном коде, он позволяет добавлять файлы XML-документации, модифицированные XML, в пакет NuGet и, следовательно, работает с Intellisense в упомянутых пакетах NuGet.

См. www.inheritdoc.io для получения дополнительной информации (доступна бесплатная версия).