Строка XML в сводном комментарии C#
-
03-07-2019 - |
Вопрос
Я документирую несколько методов, написанных на C# и предназначенных для анализа токенов.Из-за некоторых технических ограничений в других областях системы эти токены должны принимать форму элементов XML (т. е. <tokenName />
).Я хотел бы указать формат этих токенов в самом сводном заявлении.
Однако это вызывает ошибку:Неверный формат XML — имя началось с недопустимого символа».Есть ли какая-либо последовательность escape-символов, которую я могу использовать для встраивания XML в сводные комментарии C#?
Решение
Используйте стандартное экранирование XML.Например:
<summary>This takes a <token1> and turns it into a <token2></summary>
Не так-то просто набирать или читать код, но IntelliSense правильно отменяет экранирование, и вы видите правильную, читаемую информацию во всплывающей подсказке.
Другие советы
Используйте раздел CDATA.Например:
<![CDATA[ <name>Bob</name> ]]>
Это более элегантно и читабельно в исходном коде, чем кодирование специальных символов в ссылках на сущности, когда у вас есть больший фрагмент XML.
Если XML-код, который вы хотите внедрить, содержит разделы CDATA, вам необходимо использовать несколько разделов CDATA, как описано в разделе еще один ответ на переполнение стека или на Википедия.Или вы всегда можете использовать простые ссылки на сущности, как описано в других ответах здесь.
Я использую escape-последовательности, поскольку всплывающая подсказка VisualStudios не отображает ничего, что находится внутри раздела CDATA.
Уже очень поздно, но столкнулся с той же проблемой, используя <![CDATA[]]>
скроет комментарий в Intellisense.
Замена обоих <
и >
мне пришлось много работать (ленивый :)).Я обнаружил, что просто заменив <
с <
этого было достаточно для Intellisense, поскольку он делает XML недействительным и позволяет Intellisense анализировать его как текст в сводном блоке.
Вот пример:
/// <summary>
/// Parse the queue process response
/// <para><?xml version="1.0" encoding="utf-16"?><result success="True"><entity type="resource" operation="update" /></result></para>
/// <![CDATA[
/// <?xml version="1.0" encoding="utf-16"?><result success="True"><entity type="resource" operation="update" /></result>
/// ]]></summary>
/// <param name="response"></param>
/// <returns></returns>
Intellisense покажет это:
Parse the queue process response
<?xml version="1.0" encoding="utf-16"?><result success="True"><entity type="resource" operation="update" /></result>