前の記事では、反応のAutofac、パークフレンズの簡単な例を与えます:
「完全にautofacアーキテクチャ原理やが理解し、基本的にIOCの使用を理解し、登録したクラスからラインインターフェイスでクラスを識別しますが、コンストラクタ構文を呼び出すために」
例えば、この記事、または最後に、Autofacを参照していないので、自分自身の完全な使用はFakeAutofacを書くために、デモが実行してみましょう。
この記事の高いと関連の以前の記事のために、ソースコードは、以前の各地から進化したものです。私は、ここでは公園の友人の前の記事、トラブルの会場を読んで、ソースコードを二をダウンロードして、例Autofac機能を使用する方法について考えていません。
IoCコンテナAutofac(1) - どのようなのIoCとIocの使用方法を理解しています
簡単な例(ソースデモ付き) - のIoCコンテナAutofac(2)
ここで、この記事のソースコードである AutofacDem0.zip主反射、ジェネリック、デリゲートのソース・コードの知識に関連します、。
この記事では、必ず私は非常に理解しやすいが、幸い、ソースコードではなく、符号量のすべてを置くことができない、プラス多くのコメントがあり、我々は理解して、それを比較することができます。
あなたがソースコードに関するご意見やご質問がある場合は、コメント欄にメッセージや書き込みを残すことができ、私は答える、答えてみてください。
読むカタログ:
分析A。開始前
II。プロセスで遭遇する困難のいくつかを達成するために
III。概要
開始前の分析I.
私たちは、主にAutofacにクラスとメソッドを使用します。
クラスContainerBuilder方法:
RegisterType <T>()//登録タイプT AsImplementedInterfaces()//は、登録、登録インターフェースマナーの種類を示して ビルド()//コンテナを作成します
インターフェイスいるIContainer方法:
解決<T>()//タイプTは、実施例において、容器から除去さ
ここではクラス図は次のとおりです。
第二に、その過程で遭遇する困難のいくつかを達成するために
例えば、いくつかのタイプの必要性、種類のコンストラクタ構成されたインスタンスを起動するために、直接反射を使用することができる場合、レジスタ・コレクション・クラス・タイプは、格納するために使用することができます。
これは非常にシンプルに見えますが、我々はソースコードを見過程でいくつかの困難がありますが、あなたはこれらの問題を解決する方法のこれらの質問を見てみることができます。
1.どのように()メソッドAsImplementedInterfacesを達成するには?
この方法の役割は、レジスタのタイプは、例えば、インタフェースの形で存在する指定することで、
私は以下のコードを実行すると、
builder.RegisterType <ListMovieFinder>()AsImplementedInterfaces();. //登録するクラスへのインタフェースIMovieFinder ListMovieFinder
私は解決を使用するように<IMovieFinder>()例えば、インターフェースはListMovieFinderのインスタンスが返され
2.同じタイプは、そのようなソースコードとして登録、前後カバーの登録を達成するための方法:
builder.RegisterType <ListMovieFinder>()AsImplementedInterfaces()。 builder.RegisterType <DBMovieFinder>()AsImplementedInterfaces()。
戻るDBMovieFinderはListMovieFinder登録が上書きされます
このように、私は決意を呼び出すとき<IMovieFinder>()例えば、インターフェースはDBMovieFinderのインスタンスが返されたとき
3.コンストラクタはパラメータを持っている場合、コンストラクタを呼び出すと、反射されるときに使用される場合、これらのパラメータはまたAutofacから構成されています。
私たちは<MPGMovieListerを>()解決する場合たとえば、あなたはMPGMovieListerコンストラクタは、パラメータもAutofacによって作成されているか、型IMovieFinderのパラメータを必要とするとき、MPGMovieListerインスタンスを取得したいですか?
第三に、要約
ソースコードはAutofacの一部の機能を簡単に模倣され、それだけでAutofac既存の機能は、バケツの低下であるとみなすことができます。
他の人が直接フレームワークを使って書かれた、自然界では最も単純で十分です。しかしAutofacを達成模倣するソースコードを書くために自分の手によって、より多くの彼は、オープンソースのフレームワークや製品の操作を行い、それらの開発者に非常に感謝し、同時に、学びました。