2010-03-19 2 views
6

Мы поставляем ряд сборок внешним клиентам, но не все официальные API-интерфейсы официально поддерживаются. Например, из-за менее оптимальных вариантов дизайна иногда тип должен публично отображаться на сборке для остальной части нашего кода для работы, но мы не хотим, чтобы клиенты использовали этот тип. Одна часть сообщения об отсутствии поддержки не предоставляет какой-либо intellisense в виде комментариев XML.выборочно подавлять комментарии к XML-коду в C#?

Есть ли способ выборочно подавить комментарии XML? Я ищу что-то другое, кроме игнорирования предупреждения 1591, поскольку это проблема долгосрочного обслуживания.

Пример: У меня есть сборка с общедоступными классами A и B. A официально поддерживается и имеет документацию XML. B не предназначен для внешнего использования и не должен документироваться. Я мог бы включить документацию XML, а затем подавить предупреждение 1591. Но когда я позже добавлю официально поддерживаемый класс C, я хочу, чтобы компилятор сказал мне, что я испортил и не смог добавить XML-документацию. Этого не произошло бы, если бы я подавил 1591 на уровне проекта. Полагаю, я мог бы # прагма на всех классах, но, похоже, должен быть лучший способ сделать это.

ответ

3

Как насчет того, чтобы не предоставлять intellisense вообще?

///<summary>A documentation</summary> 
public class A { } 

///<summary>B documentation. This class is not supported...</summary> 
[EditorBrowsable(EditorBrowsableState.Advanced)] 
public class B { } 

///<summary>C documentation</summary> 
public class C { } 

Таким образом, вы можете документировать неподдерживаемые классы (внутренние пользователи также важны!) И ваши внешние пользователи не видите их на IntelliSense. Внутри вы можете позволить визуальной студии «видеть» эти расширенные конструкции. Страница для EditorBrowsableAttribute говорит нам, как:

В Visual C#, вы можете контролировать, когда дополнительные свойства появляются в IntelliSense и окна свойств с Скрыть настройки Advanced Members под Инструменты | Варианты | Текстовый редактор | C#. Соответствующий редакторBrowsableState является расширенным.

5

Сделайте такие методы internal и добавьте атрибут [assembly: InternalsVisibleTo("AssemblyName")] к сборке, разоблачающей их.

+0

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

+3

@Mike Post Сохранение вашего публичного API отдельно от вашего частного API должно было быть вашим основным вопросом с первого дня, если это не так, вам нужно много рефакторинга. Для этого нет быстрого решения, и то, что предлагает Джон, на самом деле довольно аккуратный, не знал, что вы можете разоблачить внутренние методы для других собраний * friend *. –

2

Попробуйте использовать директиву #pragma по адресу enable or disable specific warnings.

///<summary>some documentation</summary> 
public class A{ 
    //... 
} 

#pragma warning disable 1591 
public class B{ 
    //... 
} 
3

Одна часть общения отсутствие поддержки не оказывать никакого IntelliSense в виде XML комментариев.

Не могли бы вы вместо того, чтобы комментировать эти методы с помощью простого < резюме > Не для наружного применения. </summary > комментарий?

Смежные вопросы