24

「CompareOrdinalOverloads」などのMSDNリンクが表示されます。どうすればC#でそのようなリンクを書くことができますか?

私は試した:

<seealso cref="MyMethod">MyMethod Overloads</seealso>

しかし、コンパイラーは、他のオーバーロードを持つメソッドのあいまいな参照であることについて警告を出します。

(最初の質問:オーバーロードにリンクするために実際にこのタグを作成する必要がありますか、それともドキュメントプロセッサによって自動的に生成されますか?)

4

3 に答える 3

15

特定のメンバーをターゲットにするには、署名に一致するだけだと思います。

/// <seealso cref="Foo(int)"/>
static void Foo() { }
/// <seealso cref="Foo()"/>
/// <seealso cref="Foo(float)"/> <------ complains
static void Foo(int a) { }

正直なところ、「すべてのオーバーロード」リンクを生成する方法がわかりません。賢明なジェネレーターならどれでもこれを自動的に行ったと思います。

于 2009-01-07T09:29:56.013 に答える
13

Sandcastleを使用すると、簡単です。

<seealso cref="overloads:FullyQualifiedMyMethod">MyMethod Overloads</seealso>

FullyQualifiedMyMethodは、名前空間とクラスを含む、オーバーロードに到達するために必要な完全なルートです。つまり、System.Linq.Enumerable.Sumです。

ただし、VBコンパイラは、属性を解決できないという警告を発行します。これは無視できます。

于 2012-01-07T18:08:31.000 に答える
5

Xml ドキュメントには、メソッドのすべてのオーバーロードを参照する手段がありません。

C# プロジェクトの最も一般的なドキュメント ジェネレーターは Sandcastle です。必要に応じて、オーバーロード リスト ページへのリンクが自動的に作成されます。したがって、メンバー リスト ページでは、オーバーロードされたメソッドの名前は 1 回だけ表示されます。クリックすると、そのメソッドのオーバーロード リスト ページに移動し、そこから特定のオーバーロードに移動します。

オーバーロード リスト ページへのリンクを Xml ドキュメントに配置するには、使用されている外部ツールに関する詳細な知識が必要であり、おそらく良い考えではありません。

本当にこれが必要な場合は、おそらく 1 つの方法は、特定の形式の ID を持つアンカーを使用することです。ほとんどのドキュメント ジェネレーターは、生成されたファイルを前処理または後処理する難解な手段を提供しており、これらのアンカーを選択して適切な href を提供する機会を提供する必要があります。

OTH、それはその価値よりも面倒かもしれません;)

于 2009-01-07T10:00:00.557 に答える