XML文档问题中的泛型

时间:2012-02-23 12:13:11

标签: c# xml-documentation

我试图在我的类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 个答案:

答案 0 :(得分:7)

在xml文档中,您必须用大括号替换三角形括号:

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

 }

 public void DoSomething<T>()
 {

 }

你最终被迫这样做的原因,因为如果你允许在元素标记之外使用三角括号,它真的不是很好的形式。

你试过的替换是正确的。

答案 1 :(得分:5)

您没有关闭第4行中的Remarks元素,可能会抱怨,只是在错误的行号。

此外,对于包含泛型的示例,它会选择List<string>作为文本文本List,后跟未关闭的string XML元素。最简单的方法是执行List &amp;lt;string&amp;gr;,在解析时生成List<string>而不是XML元素。

C#编译器团队添加了{}作为替换,因此您只需执行List{string}即可将其处理为&lt;&gt;&#;

答案 2 :(得分:3)

有几件事:

  1. 使用<>替换&lt;&gt;个字符。
  2. 使用<remarks>
  3. 关闭您的XML </remarks>部分
  4. 当您决定引用标记中的通用(例如<see ... /><seealso ... />等)时,您会这样做,如下所示:<see cref="SomeMethod{T}(T value)" />。永远不要在引用中指定具体类型(即,不要<see cref="SomeMethod{String}(String value)" />)。
  5. 以下是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>
    {
        ....
    }
    

答案 3 :(得分:2)

您的<remarks>永远不会关闭。

还需要像您已尝试过的那样更换角度支撑。