Aps.Net WEBAPI依存性注入

私たちは始める前に、まずは、依存性注入が何であるかを見てみましょうか?

プログラミングでは、制御依存性注入の実装は、設計パターンを解決するための反転と依存されます。依存性を利用することができる物体を指します。依存性注入は、使用するに依存オブジェクトが送信さによって異なりあります。サービスは、クライアントの状態の一部となり、クライアントにサービスを提供し、クライアントが確立したり、サービスを追求することは許されないだろう。依存性の注入、当社のプログラミングコードは、疎結合と管理が容易になるように。

  依存タイプの注入:

コンストラクタ・インジェクション:クライアントクラスのコンストラクタ経由でコンストラクタ・インジェクション、インジェクタサービス(依存)。

プロパティ注入:プロパティ(別名セッターインジェクション)に注入し、注射器は、共通の特性に依存するクライアントクラスによって提供されます。

注射の方法は:注射のこのタイプでは、クライアント・クラスは、依存性宣言方法を提供するインターフェイス、インターフェイスを実装し、注射は、クライアント依存クラスを提供するためにこのインタフェースを使用します。

利点は、注射によって異なります。

  • 依存関係を削減
    • 依存性注入は、不必要なコンポーネント間の依存性を低減または排除することができます。成分の変化は、成分の影響を減少させる場合
  • 強化された再利用性
    • 還元成分の依存性は、コンポーネントの再利用性を高めることができます。異なる文脈で異なる実装インタフェース、同じ又は異なる構成のみ達成された場合、アセンブリは、この実装を使用するように構成することができます。コードの変更はありません。
  • テスト容易性を向上するためのコード
    • 依存性注入はまた、アセンブリのテスト容易性を増大させます。依存コンポーネントを注入することができる場合、これらの手段は、アナログインプリメンテーション依存性に注入することができます。実際の実装の代替として試験用の挙動シミュレーションオブジェクト、およびオブジェクトをシミュレートするように構成することができます
  • コードの可読性を向上させます
    • 依存性注入依存性は、インタフェースコンポーネントに移動させることができます。それはそれは簡単にコードをより読みやすくなるように、依存関係を持っているかのコンポーネントを参照することができます。
  • 依存関係のキャリアを削減
    • キャリアに依存するコードが困難読み取りおよび維持すること、「ノイズ」が大量に生成され、試験にアセンブリより困難にされます。依存性注入と単一の実施形態を使用して依存し、静荷重を減少させる、一緒に完全なアセンブリを連結することができます

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 

おすすめ

転載: www.cnblogs.com/2018clg/p/10948694.html