我可以像这样引用泛型类型/方法定义:
/// <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>
。
答案 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转换为创建实际文档时,您可能会有更好的运气。