2009-03-26 17 views
38

述語ヘルパークラスのXMLドキュメントを記述しています。しかし、私はExpression<Func<T, bool>>を参照することができますが、構文エラーは出ません。それも可能ですか?私はこれを試してみました:C#XMLドキュメントのジェネリック型の汎用型を参照してください。

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

しかし、私は{T, bool}}下に赤い波線を取得します。これは機能します:

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

誰か手掛かりがありますか?


更新:与えられた(と私は受け入れられ)た

答えは一見仕事をしました。しかし、今私は解決できないものについて多くの警告を得るようになりました。私はExpression<Func<T, bool>>とよく働くクラスExpressionBuilder<T>を持っています。だから私はもちろん、私のXMLコメントでそれを参照したいと思います。

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

しかし、どちらの作品:

は、私が知っている両方のバージョンを試してみました。 (そして最後の1で、ReSharperのは、私はと言うそれを使用しているどこにでも波線私は、コンパイルの下に2つの警告を取得し{T,Boolean}}下の青を置く:「何とか何とか」のXMLコメントは、属性「式をcrefをしてい

  1. > 「それは
  2. Typeパラメータ宣言は識別子ではないタイプでなければなりません解決できませんでした。また、エラーCS0081を参照してください。

同じ問題がどこかに私がRange<Nullable<DateTime>>を参照してみました(Range<DateTime?>もどちらも機能しませんでした。 {}とともに&lt; &gt;

これらの種類のジェネリックを参照することはできませんか?

+2

私は同じ質問をしていました。このタイトルはあまりキーワード-yではないので、これを見つけるにはしばらく時間がかかりました。 「C#XMLドキュメントの汎用タイプの汎用タイプをどのように参照するのですか」を提案できますか? 「ジェネリックス」タグを追加することもできます。私は自分自身でそれをする担当者を持っていません。 –

+0

done =) – Svish

+0

答えて

37

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

あなたが<see cref="IEnumerable{Int32}" />を記述する場合、コンパイラはちょうど型パラメータ名として「のInt32」を使用して、いない型引数:

ラッセV Karlsenののanswerは、それが私のためにクリックしてくださいました。 <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> 

私はあなたがテキストのように願っています:

が正しく、私はあなたのような何かを書く必要があるだろうと思う自分のクラスを文書化します。

+4

いいえ、私はテキストが嫌いです。だから私はこの質問をしました。まあ...多分将来のバージョンのxml-doc:p – Svish

3
// Use "&lt;" instead of "<" symbol and "&gt;" instead of ">" symbol. 

// Sample: 

<see cref="Expression&lt;Func&lt;T, bool&gt;&gt;"/> 
+0

ああ、私は...醜いですが、うまくいっています= /なぜそれは1つのタイプのために{}を受け入れますか? – Svish

+0

これは本当ですか? –

+1

何について?私が言ったように、 'Expression {TDelegate} 'や' List {String} 'のような赤い波線はありません。実際に、にオートが完了します。リストを書いてEnterを押すと、List {T}に自動補完されます。 – Svish

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}}"/>. 

しかし、これは動作しますので、どうやら

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

ジェネリック型をパラメータは、宣言内のパラメータと同じである必要はありません。

+0

したがって、特殊型を持つジェネリック型を参照する方法はありません引数? List >を返す関数を持っていたように、リストが返されたとしか言えません。 – Svish

+0

またはリスト ..それはちょうど... – Svish

+2

のように動作するようです。それは、 "String"が汎用タイプ名として使用されたからです。リストを試してみてください。 –

0

List<List<byte>>を返す関数があるので、これを実行しています。うん、それは醜いですが、私はそれを書いていませんでした。標準的な免責事項、私は知っています。

とにかく、R#究極の2017.1、このdocコメント...

<returns><see cref="List{List{Byte}}" /> of split frames</returns> 

とVS 2017年に...私は、構文エラーになります。ただし、この...

<returns><see><cref>List{List{byte}}</cref></see> of split frames</returns>

は...しません。 Eeeenteresting

まだ醜いですか?はい。

ugly?私は&lt;&gt;自分自身を使用するよりも恐ろしいと思う....

0

空の参照要素(<see cref="..." />)を使用しないでください。代わりに、see要素の中にテキストを入れてください

<see cref="IEnumerable{T}">IEnumerable</see>&lt;<see cref="..."/>$gt; 
関連する問題