Visual Studioでインターフェースと実装クラス間を移動する方法

C#DIコンテナを使って開発をしている時には、インターフェイスと実装クラス間を相互に移動したいことがあります。VS2010と2012で楽に移動する方法について軽く調べてみました。

Resharperを使っていれば、InterfaceとImplements間を簡単に移動できます。これが一番ですが、有償ツールなので使えないことも多いと思います。

その場合、フリーの機能拡張Inheritance Marginを利用することができます。

Inheritance Marginアドインをインストールすると、行頭に「I」というマークが表示されます。右クリックで移動先を選択できます。これでインターフェイスメソッドと実装メソッドを相互に移動できます。キーボードショートカットはない模様です。
軽く動作確認したところ、Iマークが表示されるまで時間がかかることもありました(ファイルのパース状況は出力ウィンドウのTVL Diganosticsに表示されます)が、無料ですし補助的なツールとしては悪くないと思います。



なお、Stackoverflowの「How do you quickly find the implementation(s) of an interface's method?」では、「呼び出し階層」の使用が人気が高かったです。

「CTL-K、CTL-T、↓、↓、→、エンター」というキーバインドを身に着けてしまえば、インターフェースから実装メソッドの探索はすぐにできます。なお、「全ての参照の検索(Shift+F12)」も使えますが、メソッドの内容を確認しないといけない分、少し手間な気がします。



他のやり方としてはCTL+SHIFT+Fで、インターフェイスを実装しているクラスをワイルドカード正規表現)で探す方法が紹介されていました。

GREPのようなものですが、キー入力が面倒なので、対象にカーソルをあわせて「移動(CTL+,カンマ)でも良いですね。



DevExpressのDXCoreとプラグインを組み合わせる方法も紹介されていましたが、私が試した限りは上手く動作しませんでした。