web-dev-qa-db-ja.com

インターフェースのすべての実装をどのように見つけますか?

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

力ずくの方法は、Visual Studioで「参照の検索」を使用し、結果を手動で調べて使用と実装を分離することですが、大きなコードベースのインターフェースの場合参照実装が比較的少ない場合、これは時間がかかり、エラーが発生しやすくなります。

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

62
iammichael

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

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

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

ReSharperがない場合:

  • Reflector を使用すると、すべてのタイプ階層を非常に簡単に表示できます。タイプ名のすぐ下に、ベースタイプと派生タイプの展開可能なアイテムがあります。 ILSpydotPeek などの同様のツールを利用できます。
  • ReSharperを購入する-それは素晴らしいツールです:)
33
Jon Skeet

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

98
phoose

カーソルをクラスまたはインターフェイスタイプに置き、

CTRL + F12

16

Visual Studio 2010以降

メンバーメソッドを右クリックし、[呼び出し階層の表示]を選択します。 Implementsフォルダーを展開します。これは、メソッドが属するインターフェースを実装するすべてのタイプをリストします。

enter image description here

Resharper 7を使用

インターフェースを右クリックし、[移動]> [派生シンボル]を選択します。 boldにリストされている記号は、インターフェースから直接派生しています。太字以外の記号はスーパークラスから派生しています。

enter image description here

13
P.Brian.Mackey

Visual Studio 2015を使用している人のために、この素​​晴らしい拡張機能 Go To Implementation があります。試してみる。

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

9
Nik A.

Visual Studio 2015を使用している場合は、Visual Studio 2015 Update 1 RCをインストールします。 Visual Studioブログ から:

本日、Visual Studio 2015 Update 1 RCをリリースしました。これは、3週間前にリリースしたUpdate 1 CTPに基づいています。ここで説明するCTPで導入された機能に加えて、リリース候補には次のものが含まれます。

  • Go To Implementation。多くの人が待ち望んでいた機能:インターフェースまたは抽象メソッドを右クリックし、このコマンドを選択して実装に移動します。
6
Nate Cook

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

2

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

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

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

Visual Studio Screenshot

2
Kees C. Bakker

「移動...」オプションの方が好きです。カーソルを関数呼び出しに置いて、次のことを試してください。

ショートカットキー:

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

メニュー:

  1. 編集メニュー
  2. 「移動...」をクリックします

利点:

  • 「すべての参照を検索」のようにすべての参照を表示しない
  • 実装の「タイプ」を表示するので、どちらのインターフェースであるかがわかります
2
Tony L.

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

1
Akira Yamamoto

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

0
Canavar

doxygen は、javadocがJavaと同じように。

0
overslacked