Обобщения в выпуске XML документации

Я пытаюсь включить фрагмент кода в мою документацию по XML, но компилятор жалуется, что элемент xml не закрыт! Вот чего я пытаюсь добиться

/// <summary>
/// Method documentation here...
/// </summary>
/// <remarks>
/// <para>
/// This class should be used as follow:
/// <br/>
/// ************** PROBLEM IN NEXT LINE ********************
/// <c> MyClass class = new MyClass<String>(); </c>
/// </para>
/// </remarks>
public class MyClass<T>{
....
}

Я пытался заменить фрагмент кода на /// <c> MyClass class = new MyClass{String}(); </c>

Кто-нибудь испытывал это раньше?

Спасибо за вашу помощь

4 ответа

Решение

В документации XML вы должны заменить треугольные фигурные скобки:

 /// <summary>
 /// Calls <see cref="DoSomething{T}"/>.
 /// </summary>
 public void CallsDoSomething()
 {

 }

 public void DoSomething<T>()
 {

 }

Причина, по которой вы вынуждены были это сделать, заключается в том, что это действительно неправильно сформированный xml, если вы разрешаете треугольные скобки вне разметки элементов.

Замена, которую вы пробовали, правильная.

Вы не закрыли Remarks элемент в 4-й строке, он может жаловаться на это, просто на неправильный номер строки.

Кроме того, с примерами, содержащими дженерики, он подхватывает List<string> как текст буквальный List с последующим открытым string Элемент XML. Самый простой способ обойти это сделать List &amp;lt;string&amp;gr; который при разборе производит List<string> не будучи элементом XML.

Команда компилятора C# добавлена { а также } в качестве замены, так что вы можете просто сделать List{string} и он будет обработан в <>.

Пара вещей:

  1. Побег свой < а также > символы, заменив их &lt; а также &gt;,
  2. Закройте свой XML <remarks> раздел с </remarks>
  3. Когда вы решили ссылаться на универсальный в теге (т.е. <see ... />, <seealso ... />и т. д.) тогда вы бы сделали так: <see cref="SomeMethod{T}(T value)" />, Никогда не указывайте конкретный тип в ссылке (то есть не делайте <see cref="SomeMethod{String}(String value)" />).

Вот исправленная версия ваших комментариев XML:

/// <summary>
/// Method documentation here...
/// </summary>
/// <remarks>
/// <note type="implementsinfo">
///     <para>This class should be used as follow:</para>
///     <para><c>MyClass class = new MyClass&lt;string&lt;();</c></para>
/// </note>
/// </remarks>
public class MyClass<T>
{
    ....
}

Ваш <remarks> никогда не закрываются.

Замена угловых скоб, как вы уже пробовали, также необходима.

Другие вопросы по тегам