44

述語ヘルパー クラスの XML ドキュメントを作成します。Expression<Func<T, bool>>しかし、構文エラーなしで参照できることがわかりません。それは可能ですか?私はこれを試しました:

<see cref="Expression{Func{T, bool}}"/>

しかし、下に赤い波線が表示され{T, bool}}ます。これはうまくいきます:

<see cref="Expression{TDelegate}"/>

誰にも手がかりがありますか?


アップデート:

与えられた(そして私が受け入れた)答えは一見うまくいったようです。しかし今、私は解決できないものについて多くの警告を受け始めました. 私は多くのことを扱うというクラスを持っていExpressionBuilder<T>ますExpression<Func<T, bool>>。もちろん、XML コメントでそれを参照したいと思います。

私が知っている両方のバージョンを試しました:

<see cref="Expression&lt;Func&lt;T, Boolean&gt;&gt;"/>
<see cref="Expression{Func{T, Boolean}}"/>

しかし、どちらも機能しません。(そして最後のものでは、ReSharper は青い波線を下{T,Boolean}}に置きます。使用したすべての場所でコンパイル中に 2 つの警告が表示されます。

  1. 「何とか」の XML コメントには、解決できなかった cref 属性「Expression>」があります。
  2. 型パラメーターの宣言は、型ではなく識別子でなければなりません。エラー CS0081 も参照してください。

私が参照しようとした場所で同じ問題を抱えていますRange<Nullable<DateTime>>Range<DateTime?>どちらも機能しませんでした。 { } と の両方で&lt; &gt;

これらの種類のジェネリックを参照することは想定されていませんか?

4

7 に答える 7

47

実際には、特定の型のジェネリックを参照する方法がないため、XML ドキュメントでジェネリックのジェネリックを参照する方法はないようです。

Lasse V Karlsenの答えは、私にとってクリックになりました:

を記述した場合<see cref="IEnumerable{Int32}" />、コンパイラは型引数ではなく型パラメーター名として "Int32" を使用するだけです。書き込み<see cref="IEnumerable{HelloWorld}" />も同様に機能します。ドキュメントがリンクできる「IEnumerable of int」に関するMSDNの特定のページがないため、これは理にかなっています。

クラスを適切に文書化するには、次のように書く必要があると思います。

<summary>
Returns an <see cref="IEnumerable{T}" /> of <see cref="KeyValuePair{T,U}" /> 
of <see cref="String" />, <see cref="Int32" />.
</summary>

テキストを気に入っていただければ幸いです。

于 2009-06-10T21:17:48.463 に答える
12

What exactly would you like it to link to?

There's no such thing in the documentation as a Expression<Func<T>>, so obviously a link to that would not work.

You can link to Expression<TDelegate> because that exists.

As for what works or not, neither of the following works in Visual Studio 2008 / .NET 3.5 for me:

/// <see cref="Expression&lt;Func&lt;T&gt;&gt;"/>.
/// <see cref="Expression{Func{T}}"/>.

But this works:

/// <see cref="Expression{T}"/>.

so apparently the generic type parameter doesn't have to the same as the one in the declaration.

于 2009-04-28T11:13:56.600 に答える
3
// Use "&lt;" instead of "<" symbol and "&gt;" instead of ">" symbol.

// Sample:

<see cref="Expression&lt;Func&lt;T, bool&gt;&gt;"/>
于 2009-03-26T09:00:40.893 に答える