私たちは始める前に、まずは、依存性注入が何であるかを見てみましょうか?
プログラミングでは、制御依存性注入の実装は、設計パターンを解決するための反転と依存されます。依存性を利用することができる物体を指します。依存性注入は、使用するに依存オブジェクトが送信さによって異なりあります。サービスは、クライアントの状態の一部となり、クライアントにサービスを提供し、クライアントが確立したり、サービスを追求することは許されないだろう。依存性の注入、当社のプログラミングコードは、疎結合と管理が容易になるように。
依存タイプの注入:
コンストラクタ・インジェクション:クライアントクラスのコンストラクタ経由でコンストラクタ・インジェクション、インジェクタサービス(依存)。
プロパティ注入:プロパティ(別名セッターインジェクション)に注入し、注射器は、共通の特性に依存するクライアントクラスによって提供されます。
注射の方法は:注射のこのタイプでは、クライアント・クラスは、依存性宣言方法を提供するインターフェイス、インターフェイスを実装し、注射は、クライアント依存クラスを提供するためにこのインタフェースを使用します。
利点は、注射によって異なります。
- 依存関係を削減
- 依存性注入は、不必要なコンポーネント間の依存性を低減または排除することができます。成分の変化は、成分の影響を減少させる場合
- 強化された再利用性
- 還元成分の依存性は、コンポーネントの再利用性を高めることができます。異なる文脈で異なる実装インタフェース、同じ又は異なる構成のみ達成された場合、アセンブリは、この実装を使用するように構成することができます。コードの変更はありません。
- テスト容易性を向上するためのコード
- 依存性注入はまた、アセンブリのテスト容易性を増大させます。依存コンポーネントを注入することができる場合、これらの手段は、アナログインプリメンテーション依存性に注入することができます。実際の実装の代替として試験用の挙動シミュレーションオブジェクト、およびオブジェクトをシミュレートするように構成することができます
- コードの可読性を向上させます
- 依存性注入依存性は、インタフェースコンポーネントに移動させることができます。それはそれは簡単にコードをより読みやすくなるように、依存関係を持っているかのコンポーネントを参照することができます。
- 依存関係のキャリアを削減
- キャリアに依存するコードが困難読み取りおよび維持すること、「ノイズ」が大量に生成され、試験にアセンブリより困難にされます。依存性注入と単一の実施形態を使用して依存し、静荷重を減少させる、一緒に完全なアセンブリを連結することができます
1. Autofacの選択はNuget、Autofac.WebApi2にインストールする必要があります
2. Global.asaxの中で次のコードApplication_Startメソッドを追加します。
// * DI * / VARのビルダー= 新しい新ContainerBuilder(); builder.RegisterApiControllers(Assembly.GetExecutingAssembly()); // 射出プロジェクト名(すべてのオブジェクトBusinessRepository、MysqlDBRepositoryプロジェクトインジェクション) // VAR = BusinessRepositoryアセンブリ。ロード( "BusinessRepository"); // VAR = MysqlDBRepository Assembly.Load( "MysqlDBRepository"); // builder.RegisterAssemblyTypes(BusinessRepository).AsImplementedInterfaces(); // builder.RegisterAssemblyTypes(MysqlDBRepository).AsImplementedInterfaces(); // 単一オブジェクトの注入(オブジェクトを使用する必要があるプロジェクトでは、注射を移植する必要があります) builder.RegisterType <ProductBusinessRepository>()。としての<IProductBusinessRepository>(); builder.RegisterType <ProductRepository>()のような<IProductRepository> (); VaRのコンテナ= builder.Build()。 VaRのレゾルバ= 新しいAutofacWebApiDependencyResolver(容器) GlobalConfiguration.Configuration.DependencyResolver =レゾルバ。
コントローラ依存性注入3.
4.取得データインタフェース
5.Demo地址:https://pan.baidu.com/s/1XYOLmOQDnTMEW68oM2Q7XQ
抽出コード:6ski