Правильное использование встроенной документации XML для производных классов?

#c# #visual-studio-2010 #.net-4.0 #xml-documentation

#c# #visual-studio-2010 #.net-4.0 #xml-документация

Вопрос:

Хотя я думаю, что понимаю, почему встроенная документация XML (т. Е. использование трех косых черт — ///) у меня не работает, я хотел бы получить некоторые рекомендации о том, как обойти мою «проблему».

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

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

Это, безусловно, имеет смысл, и я планирую вместо этого просто поместить свою документацию в интерфейс и жить с ней. Тем не менее, мне все еще любопытно… как все остальные это делают? Есть ли какой-нибудь волшебный способ заставить всплывающую подсказку объединить все допустимые XML-документы? Другими словами, поскольку компилятор не знает, какой производный класс используется, есть ли способ показать XML docs для всех классов, которые реализуют этот интерфейс?

Ответ №1:

Это не решит всех ваших проблем, но GhostDoc может быстро вставить документацию в производный класс, используя документацию базового класса. В любом случае, стоит взглянуть, если вы создаете документацию XML.

Ответ №2:

Поскольку вы программируете для интерфейса, нет способа передать XML-документацию из реализации. Разделение означает, что две «стороны» не знают друг о друге. Как вы сказали, у вас могут быть две разные реализации этого интерфейса. В этом случае у вас был бы конфликт. Это не имеет большого значения для двоих, но как насчет 200? Кроме того, смысл использования интерфейса в том, что вам все равно, как он реализован. Вы знаете, что когда вы вызываете use интерфейс, реализация будет следовать контракту. Используйте комментарии XML в интерфейсе для описания контракта, а не реализации контракта.

Я чувствую вашу боль по этому поводу, и я не уверен, что есть лучшее решение.