在C#XML文档中引用泛型类型的泛型类型?

Svi*_*ish 41 c# generics resharper xml-documentation visual-studio-2008

为谓词助手类编写一些XML文档.但我无法弄清楚我可以参考一个Expression<Func<T, bool>>没有得到语法错误.它甚至可能吗?我试过这个:

<see cref="Expression{Func{T, bool}}"/>
Run Code Online (Sandbox Code Playgroud)

但我得到一条红色的波浪线{T, bool}}.这有效:

<see cref="Expression{TDelegate}"/>
Run Code Online (Sandbox Code Playgroud)

有人有线索吗?


更新:

给出的答案(我接受了)似乎确实奏效了.但是现在我已经开始收到很多关于无法解决的问题的警告.我有一个叫做类ExpressionBuilder<T>,其作品有Expression<Func<T, bool>>很多.所以我当然想在我的XML评论中引用它.

我尝试了两个我知道的版本:

<see cref="Expression&lt;Func&lt;T, Boolean&gt;&gt;"/>
<see cref="Expression{Func{T, Boolean}}"/>
Run Code Online (Sandbox Code Playgroud)

但是没有工作.(在最后一个问题上,ReSharper下了一个蓝色的波浪形,{T,Boolean}}我在编辑过程中得到两个警告,我用过它时说:

  1. 关于'blah blah'的XML注释具有无法解析的cref属性'Expression>'
  2. 类型参数声明必须是标识符而不是类型.另请参见错误CS0081.

在我试图引用的某个地方有同样的问题Range<Nullable<DateTime>>(也Range<DateTime?>没有用.{}和with &lt; &gt;)

我不应该提到这些种类的仿制药吗?

Ror*_*eod 42

似乎没有办法在XML文档中引用泛型的泛型,因为实际上,没有办法引用任何特定类型的泛型.

Lasse V Karlsen的回答让我点击了:

如果编写<see cref="IEnumerable{Int32}" />,编译器只使用"Int32"作为类型参数名称,而不是类型参数.写作<see cref="IEnumerable{HelloWorld}" />也会起作用.这是有道理的,因为MSDN中没有您的文档可以链接到的"IEnumerable of int"的特定页面.

为了正确记录你的课程,我认为你必须写下这样的东西:

<summary>
Returns an <see cref="IEnumerable{T}" /> of <see cref="KeyValuePair{T,U}" /> 
of <see cref="String" />, <see cref="Int32" />.
</summary>
Run Code Online (Sandbox Code Playgroud)

我希望你喜欢文字.

  • 不,我讨厌文字,这就是我问这个问题的原因.哦,好吧......也许是xml-doc的未来版本:p (4认同)
  • 不幸的是,2020 年一切都没有改变,这似乎仍然是唯一真正的解决方案。仍然无法在 cref XML 注释中引用像 `Nullable&lt;int&gt;` 这样的泛型类型。 (3认同)

ang*_*son 12

您希望它链接到什么?

在文档中没有这样的东西Expression<Func<T>>,所以显然链接到那不起作用.

您可以链接到Expression<TDelegate>因为存在.

至于什么有效,以下两个在我的Visual Studio 2008/.NET 3.5中都不起作用:

/// <see cref="Expression&lt;Func&lt;T&gt;&gt;"/>.
/// <see cref="Expression{Func{T}}"/>.
Run Code Online (Sandbox Code Playgroud)

但这有效:

/// <see cref="Expression{T}"/>.
Run Code Online (Sandbox Code Playgroud)

显然,泛型类型参数与声明中的参数不一样.

  • 那是因为"String"只是用作通用类型名称.尝试列出<DOOBIEDOOBIEDOO>,它将同样有效. (2认同)