ResharperおよびIoCコンテナー:今ではおなじみです! またはAgent Mulderプラグイン

良い時間

ご存じのように、 Resharperはコードの操作に関する多くの問題を解決しますが、それでもすべてではありません。

これらの問題の1つは、あまり解決されていませんが、IoCコンテナーに登録されたクラスを介したナビゲーションです。



簡単な例を考えてみましょう(MicrosoftのUnity IoCコンテナーを使用)。
  IUnityContainer container = new UnityContainer(); container.RegisterType<IMovieRepository, InMemoryMovieRepository>(); container.RegisterType<IMovieFinder, MovieFinder>(); 
IUnityContainer container = new UnityContainer(); container.RegisterType<IMovieRepository, InMemoryMovieRepository>(); container.RegisterType<IMovieFinder, MovieFinder>();


この例では、ResharperはMovieFinderコンストラクターが使用されている場所を「わからない」ため、(使用状況の検索コマンドで) 「Usages of 'MovieFinder(...)' was not found」というメッセージを表示します。
  public class MovieFinder: IMovieFinder { readonly IMovieRepository repository; public MovieFinder(IMovieRepository repository) { this.repository = repository; } ... } 
public class MovieFinder: IMovieFinder { readonly IMovieRepository repository; public MovieFinder(IMovieRepository repository) { this.repository = repository; } ... }



クラス名が登録で使用されていない場合、状況はさらに悪化します。 この場合、クラスは未使用としてResharperによって表示されます。

しかし、ResharperおよびIoCコンテナを「導入」するために、解決策が見つかりました。
どうやらよく知られているフレーズ「 すべてをさせてください、しかし何かが欠けている 」を使用して、 Resharper開発者はプラグインを書く機能を追加しました。
これがIgal Tabachnikが活用したものです。

Agent Mulderプラグインはコンテナを分析し、クラスとその登録間の便利なナビゲーションを提供します。

そのため、プラグインは3つの主な機能を提供します。

1.コンテナに登録されているクラスに特別なアイコンを付けます:
画像

2.クラス定義から登録場所へのナビゲーションを提供します。

3.その逆、登録からクラス定義へのナビゲーション。
画像

すべてが迅速かつ正確に機能しますが、残念ながら、時々(VS2010 + Reshaper 6.1)ナビゲーションが完全に機能しないことがあります。 私はこれらの欠点がすぐに解消されることを望んでいます。なぜなら、それは家庭で役立つからです。

プラグイン自体の周りのすべて(ウェブサイト、ドキュメント、インストール)はうまく行われ、問題なく動作します。

プラグインサイト: http : //hmemcpy.github.com/AgentMulder/には、シンプルだが明確な説明が含まれています。 さらに簡単に説明するビデオがあります。

プラグインはすでにResharperのWebサイトに到達しています 。 そこで17のプラグインを数えましたが、そのうち4つはエージェントです。

サポートされているコンテナのリストは、 https://raw.github.com/hmemcpy/AgentMulder/master/WhatsNew.txtにあります
ちなみに、IoCコンテナーを追加するには、このプラグイン用のプラグインシステムを作成する必要があります:)。

mezastelの詳細なビデオ「 Dmitry Nesteruk。ReSharper:Architecture and Extensions 」は、 Resharperのプラグインの世界を紹介するのに役立ちます。

イゴール。

Source: https://habr.com/ru/post/J145958/


All Articles