< seealso>でメソッドのオーバーロードを参照する方法C#のタグ?
-
03-07-2019 - |
質問
「CompareOrdinal Overloads」などのMSDNリンクを参照してください。 C#でこのようなリンクを作成するにはどうすればよいですか?
試しました:
<seealso cref="MyMethod">MyMethod Overloads</seealso>
しかし、コンパイラは、他のオーバーロードを持つメソッドのあいまいな参照であることについて警告を表示します。
(初心者の質問:オーバーロードにリンクするために実際にこのタグを記述する必要がありますか、それともドキュメントプロセッサによって自動的に生成されますか?)
解決
XMLドキュメントには、メソッドのすべてのオーバーロードを参照する手段がありません。
C#プロジェクトで最も人気のあるドキュメントジェネレーターはSandcastleです。必要に応じて、オーバーロードリストページへのリンクが自動的に作成されます。したがって、メンバーリストページでは、オーバーロードされたメソッドの名前が1回だけ表示され、クリックすると、そのメソッドのオーバーロードのリストページに移動し、そこから特定のオーバーロードに移動します。
Xmlドキュメントのオーバーロードリストページへのリンクを配置するには、使用している外部ツールの詳細な知識が必要であり、おそらく良い考えではありません。
これが本当に必要な場合、おそらく1つの方法は、特定の形式のIDを持つアンカーを使用することです。ほとんどのドキュメントジェネレーターは、生成されたファイルを前処理または後処理するための難解な手段を提供し、これらのアンカーを選択して適切なhrefを提供する機会を提供する必要があります。
OTH、それはその価値よりも厄介かもしれません;)
他のヒント
特定の メンバーをターゲットにするには、署名と一致していると思われます:
/// <seealso cref="Foo(int)"/>
static void Foo() { }
/// <seealso cref="Foo()"/>
/// <seealso cref="Foo(float)"/> <------ complains
static void Foo(int a) { }
正直なところ、「すべてのオーバーロード」を生成する方法がわかりません。リンク;賢明なジェネレーターはこれを自動的に行ったと思います。
Sandcastleを使用するのは簡単です:
<seealso cref="overloads:FullyQualifiedMyMethod">MyMethod Overloads</seealso>
FullyQualifiedMyMethodは、名前空間とクラスを含むオーバーロードに到達するために必要な完全なルートです。つまり、System.Linq.Enumerable.Sum
ただし、VBコンパイラは、属性を解決できないことを示す警告を発行しますが、無視できます。