Обобщения в выпуске 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 &lt;string&gr;
который при разборе производит List<string>
не будучи элементом XML.
Команда компилятора C# добавлена {
а также }
в качестве замены, так что вы можете просто сделать List{string}
и он будет обработан в <>.
Пара вещей:
- Побег свой
<
а также>
символы, заменив их<
а также>
, - Закройте свой XML
<remarks>
раздел с</remarks>
- Когда вы решили ссылаться на универсальный в теге (т.е.
<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<string<();</c></para>
/// </note>
/// </remarks>
public class MyClass<T>
{
....
}
Ваш <remarks>
никогда не закрываются.
Замена угловых скоб, как вы уже пробовали, также необходима.