70

C# で定義されたインターフェイスがあるとします。インターフェイスの実装を提供するすべてのクラスを見つける最も簡単な方法は何ですか?

強引な方法は、Visual Studio で「参照の検索」を使用し、結果を手動で調べて実装から使用法を分離することですが、比較的少数の実装で頻繁に参照される大規模なコードベースのインターフェイスの場合、これは可能性があります。時間がかかり、エラーが発生しやすい。

Java では、コードベースで javadoc を実行すると ( -private オプションを使用してプライベート クラスを含める)、インターフェイスのドキュメント ページ (例: Comparable ) が生成され、インターフェイスのすべての実装クラスとサブインターフェイスが含まれます (ただし、それは含まれません)。サブインターフェースの実装クラスが含まれている場合、これらはリストされたサブインターフェースにドリルダウンすることで比較的簡単に判別できます)。私が探しているのはこの機能ですが、C# と Visual Studio を使用しています。

4

12 に答える 12

107

メソッド名(インターフェイスの定義または他のクラスの実装)を右クリックして、[呼び出し階層の表示]を選択できます。Call Hierarchyウィンドウには、インターフェースメソッド実装のすべての場所を見つけることができる「Implements」フォルダーがあります。

于 2011-05-04T13:13:29.297 に答える
37

(コメントに基づいて編集...)

ReSharper がインストールされている場合:

Visual Studio で型名を右クリックし、[継承先に移動] を選択します。または、タイプ名を選択し、ReSharper/View/Type Hierarchy に移動して新しいタブを開きます。(メニューにはキーボード ショートカットが表示されます。これはさまざまな場合があるため、見つけ方を説明しました :)

ReSharper をお持ちでない場合:

于 2009-03-06T20:57:58.200 に答える
10

Visual Studio 2015 を使用している人には、 Go To Implementationという素晴らしい拡張機能があります。試してみる。

拡張機能をインストールしたら、任意のインターフェイス (IUrlShortener など) を右クリックして、Go To Implementationメニューをクリックします。インターフェイスを実装するクラスが 1 つしかない場合は、メニューをクリックするとそのクラスに直接移動できます。インターフェイスを実装するクラスが複数ある場合は、すべてのクラスが一覧表示されます。

于 2015-08-30T15:12:53.590 に答える
2

この機能がVSに組み込まれているとは思いませんが、IIRC Resharperにはこれがあります。

于 2009-03-06T20:57:17.360 に答える
2

インターフェイスの正規表現検索を実行できます。

:(\ *[^},]+,)*\ *IMyInterfaceName

CTRL+SHIFT+F は、次のウィンドウを起動します。

Visual Studio のスクリーンショット

于 2014-10-20T11:18:13.310 に答える
2

私は「ナビゲート...」オプションを好みます。関数呼び出しにカーソルを合わせて、次のことを試してください。

ショートカットキー:

  1. Ctrl+, (Ctrl+カンマ)

メニュー:

  1. 編集メニュー
  2. [ナビゲート...] をクリックします。

利点:

  • 「すべての参照を検索」のようにすべての参照を表示しない
  • 実装の「タイプ」を表示するので、どれがあなたのインターフェースであるかがわかります
于 2015-04-17T16:25:46.930 に答える
1

Shift + F12 を使用して、定義を含むすべての参照を表示します。

于 2014-10-17T19:47:29.633 に答える
0

resharper ALT + ENDショートカットを使用すると、すべての継承者を見つけるのに役立つ場合があります。

于 2009-03-06T20:57:55.173 に答える
0

javadoc が Java に対するものであるのと同じように、 doxygenは .Net に対するものであると言うのを聞いたことがあります (私自身は経験がありません) 。

于 2009-03-06T21:00:52.763 に答える