如何在xml文档中显示泛型参数参数

时间:2012-11-07 09:59:02

标签: c# xml-documentation

我可以像这样引用泛型类型/方法定义:

/// <summary>
/// Takes a <see cref="Func{T}"/>.
/// </summary>
public void Method<T>(Func<T> func) { }

然而,这不起作用:

/// <summary>
/// Takes a <see cref="Func{Int32}"/>.
/// </summary>
public void Method(Func<int> func) { }

ReSharper /生成的帮助文件显示Func<TResult>

1 个答案:

答案 0 :(得分:1)

在第一个示例中,您将cref属性的类型指定为类型:Func<T>。这与System命名空间中的类型完全匹配。我们需要创建指向该类型文档的链接:Func<TResult>。它很容易找到并链接到。请注意,这会生成一个指向一种类型的链接。

在第二个示例中,当您查找类型Func<Int32>时,这实际上不是具有文档的类型,您可以指向它。 System命名空间中的类型是通用的,并带有参数。您可能不认为它是完全匹配,但解析器假设Int32是您用于type参数的名称,并且您希望指向它可以在{中轻松找到的类型{1}}命名空间。同样,这会产生一个指向您实际可以在System命名空间中找到的类型的链接。

您可能想要创建一个使用两个类型链接的引用,就像在Enumerable.Sum参考页面上完成的那样。对于这种方法,

System

他们使用两个链接记录了参数选择:

  

输入:System.Func&lt; TSource,Int32&gt;

在这里,他们引用了两种类型,而不是一种。其中一个链接看起来像是对委托组public static int Sum<TSource>( this IEnumerable<TSource> source, Func<TSource,int> selector ) 的引用(它同样不是我们可以指出的文档类型),但它实际上指向System.Func委托的文档。另一个链接是System.Func<T,TResult>

如果你变得更正式,你可以这样做。 xml通过编译器验证,如果使用

,则不会更改
System.Int32

但是,我不知道它将如何显示在大多数模板中。它是用于记录Entity Framework源代码的内容。有关示例(不能很好地显示),您可以查看System.Data.Entity.Core.Common.CommandTrees.ExpressionBuilder namespace的文档。

我也看到它用

完成
<see cref="T:System.Func{T:System.Int32}"/>

再一次,忽略模板以便很好地显示它并且仅通过xml,这产生了通过编译器语法验证的标记。当您从xml转换为创建实际文档时,您可能会有更好的运气。