Обобщения в выпуске XML документации - PullRequest
5 голосов
/ 23 февраля 2012

Я пытаюсь включить фрагмент кода в мою документацию по 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 ]

7 голосов
/ 23 февраля 2012

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

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

 }

 public void DoSomething<T>()
 {

 }

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

Попытка замены выполнена правильно.

5 голосов
/ 23 февраля 2012

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

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

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

3 голосов
/ 23 февраля 2012

Пара вещей:

  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>
{
    ....
}
2 голосов
/ 23 февраля 2012

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

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

...