web-dev-qa-db-ja.com

インターフェイスのメソッドの実装をすばやく見つけるにはどうすればよいですか?

インターフェイスのメソッド/プロパティ/などへの参照ではなく、すべての実装をすばやく見つける方法はありますか?サンプルコードを次に示します。

public class SomeClass : IBaseClass
{
  public Int32 GetInt()
  {
     return 1;
  }
}

public interface IBaseClass
{
  public Int32 GetInt();
}

public class SomeOtherClass
{
  IBaseClass _someClass;
  private TestMethod()
  {
    _someClass = new SomeClass();
    _someClass.GetInt();
  }
}

SomeOtherClass.TestMethod()を確認しながら、すぐにSomeClass.GetInt()にアクセスしたい。 _someClass.GetInt()を右クリックして[定義に移動]をクリックすると、インターフェイスが表示されます。 「すべての参照を検索」をクリックすると、GetInt()メソッドを実装するクラスだけでなく、すべての用途のリストが表示される可能性があります。

これを見つけるより速い方法はありますか?他の開発者からのヒントはありますか? D.I.を使用していますほとんどの依存関係では、深くネストされたコードをトレースするにはforeverが必要です。

67
Beep beep

コーディング中にマウスを使うのは好きではないので、通常は

  • メソッドの上にカーソルを移動します
  • タイプctrl + k clrl + t Call Hierarchyウィンドウを開く
  • 実装ノードに移動します。
  • returnを入力して、選択した実装に移動します

私の知る限り、これはReSharperを使用せずにメソッドの実装を見つける最も簡単な方法です。

(ちなみに、同じシステムを使用して、クラスメソッドの実装から対応するインターフェイス宣言に移動できます。ルートを選択するだけです)

111
Arialdo Martini

Alt-EndはReSharperでこれを行うと思います。

22
lance

ReSharperを使用しない場合、これを行う最良の方法は次のとおりです。

ファイル内を検索(Ctrl + Shift + F)何を検索: "class * ISomeClass"検索オプション: "ワイルドカードを使用"

これにより、すべての実装が検索され、具体的な実装で関数を検索できます。

9
Zhenya
4
Robert Ivanc

インターフェースが通常ナビゲートしたい具象モデルと同じライブラリにある場合、具象オブジェクトに「使用エイリアス」を追加できます。とにかく「使用」はヘルパーであり、これは役立ちます。

using System;
using PrimaryImplementation = YourNamespace.YourConcreteObject;


public interface IYourInterface{

}

インターフェイスに移動すると、インターフェイスの主要な実装にすばやく(かつ汚れた)方法でアクセスできます。 F12-> F12!

2
BlackjacketMack

R#のポップアップメニューには[実装に移動]オプションがあり、これは非常に便利です。

1
Brian Rasmussen