ユニティのDI依存性注入(MVC)
.nugetダウンロードしてインストールします。
使用NugetインストールUnity.MVC
そして、インストール後に自動的に〜/ App_Start /ディレクトリにUnityMvcActivator.cs UnityConfig.csファイルを生成し、
第二の構成:
UnityConfigコードはregisterTypes()メソッドを変更する、ファイルを開き
公共の 静的な 無効RegisterTypes(IUnityContainerコンテナ) { // 注:web.configファイルのコメントを解除から以下の行をロードします。 // usingステートメントにUnity.Configurationを追加することを確認してください。 // container.LoadConfiguration(); // TODO:ここにあなたのタイプのマッピングを登録します。 // container.RegisterType <IProductRepository、ProductRepository>(); // 增加自己需要注入的接口和接口的实现类 container.RegisterType <IUserDAL、UserDAL> (); container.RegisterType <IUserBLL、UserBLL> (); }
第二に、使用:[学ぶことが容易になり、実装とコントラストの違いに注意してください]
1.コードインジェクションモード
(1)コンストラクタインジェクション(推奨):
パブリック クラスUserControllerで:コントローラ { 公共UserControllerで(IUserBLL userBLL) { この .userBLL = userBLL。 } IUserBLL userBLL。 // GET:ユーザー 公共のActionResultインデックス() { VARのリスト= userBLL.GetUserModels(); リターンビュー(リスト); } }
(2)注入特性:
名前空間ZLP.Web.Controllers { パブリック クラスUserControllerで:コントローラー { [依存関係] 公共 IUserBLL userBLL { 取得します。セット; } // GET:ユーザー 公共のActionResultインデックス() { VARのリスト= userBLL.GetUserModels()。 リターンビュー(リスト); } } }
エラー:System.NullReferenceException:「オブジェクト参照がオブジェクトのインスタンスに設定されていません。」
ソリューション:
1.増加した依存性の注入特性性を付与するために、覚えています
参照(System.Runtime.CompilerServicesを使用して;)ユニティ名前空間を使用して、間違った操作を行うされているかどうか2。
パブリックアクセス修飾子を使用するかどうかの3. [プロパティ
(3)方法注入:
2.プロファイルの注射(推奨)
3つの一般的な問題: