在第一个示例中,您将cref
属性的类型指定为 type: Func<T>
。这与命名空间中的类型完全匹配System
。我们需要为该类型创建一个指向文档的链接:Func<TResult>
. 它很容易找到并链接到。请注意,这会产生一个指向一种类型的链接。
在第二个示例中,当您查找 typeFunc<Int32>
时,它实际上并不是带有您可以指向的文档的类型。命名空间中的类型System
是通用的,并带有一个参数。您可能不认为它是完全匹配的,但解析器会假设Int32
您正在使用类型参数的名称,并且您希望指向它可以在System
命名空间中轻松找到的类型。同样,这会生成一个指向您实际上可以在 System 命名空间中找到的一种类型的链接。
您可能想要创建一个使用两个指向两种类型的链接的引用,就像在Enumerable.Sum参考页面上所做的那样。对于这种方法,
public static int Sum<TSource>(
this IEnumerable<TSource> source,
Func<TSource,int> selector
)
他们使用两个链接记录了参数选择:
类型:System.Func <TSource, Int32 >
在这里,它们引用了两种类型,而不是一种。其中一个链接看起来像是对委托组的引用System.Func
(这又不是我们可以指向的具有文档的类型),但它实际上指向System.Func<T,TResult>
委托的文档。另一个链接是System.Int32
.
如果你变得更正式,你可以这样做。xml通过编译器验证,如果使用则不变
<see cref="T:System.Func{T:System.Int32}"/>
但是,我不知道这将如何在大多数模板中显示。它用于记录实体框架源代码。对于示例(显示效果不佳),您可以查看System.Data.Entity.Core.Common.CommandTrees.ExpressionBuilder 命名空间的文档。
我也看到它完成了
<see cref="T:System.Func < T:System.Int32 >"/>
同样,忽略模板以很好地显示它并且只通过 xml,这会产生通过编译器语法验证的标记。当您将其从 xml 转换为创建实际文档时,您可能会有更好的运气。