「[[マイクロソフト系技術情報 Wiki>http://techinfoofmicrosofttech.osscons.jp/]]」は、「[[Open棟梁Project>https://github.com/OpenTouryoProject/]]」,「[[OSSコンソーシアム .NET開発基盤部会>https://www.osscons.jp/dotNetDevelopmentInfrastructure/]]」によって運営されています。

-戻る
--[[DI]]
--[[ASP.NET Core]]
---[[ASP.NET Coreへの移行]]

* 目次 [#c961339d]
#contents

*概要 [#rb685d9d]
フレームワークの差し替えを実現し、特定のフレームワークへの依存性を減らす。

-明示的な依存関係の原則~
[[constructor注入>DI#pf220003]]のDI方式を採用している。

-[[依存性反転原則>IoC#ob8c9a64]]
--抽象化は依存関係をinterfaceに抽出することにより行われる。
--interface実装をパラメタとして提供するのも、戦略設計パターンの例。

*詳細 [#ec2347ad]

**対象 [#zecaeea3]
**[[Startup>ASP.NET Coreへの移行#g42f0f08]] [#xa0350c3]

**Controller [#q1ed58f9]
-MVCのControllerは、constructorを使用しサービスを挿入する。
-Action methodのパラメタとしてサービスを挿入することもできる。

-参考
--コントローラーへの依存関係の挿入~
https://docs.microsoft.com/ja-jp/aspnet/core/mvc/controllers/dependency-injection

**インジェクション用構成 [#i8e6b534]
-

-Public constructor
--1つのPublic constructor(複数のPublic constructorは例外)
--依存関係の挿入によって提供されない引数は、既定値のサポートが必要。

-抽象化は依存関係をinterfaceに抽出

**コンテナを変更する。 [#wf1daf74]
-ConfigureServices メソッドが、IServiceProvider を返すようにシグネチャを変更する。
-すると、[[Autofac>#vd7b0259]]など、別のコンテナを構成して返すことができる。


*参考 [#f9f43786]

**Microsoft Docs [#f49f72b7]
-ASP.NET Core での依存関係の挿入~
https://docs.microsoft.com/ja-jp/aspnet/core/fundamentals/dependency-injection

-コントローラーへの依存関係の挿入~
https://docs.microsoft.com/ja-jp/aspnet/core/mvc/controllers/dependency-injection

**DevIQ > Posts [#y7498077]

***Principles [#nf97d12d]
-Inversion of Control~
http://deviq.com/inversion-of-control/

-Dependency Inversion Principle~
http://deviq.com/dependency-inversion-principle/

-Explicit Dependencies Principle~
http://deviq.com/explicit-dependencies-principle/

***Patterns [#b04e13c8]
-Strategy Design Pattern~
http://deviq.com/strategy-design-pattern/

**時が癒す [#jec03fd1]
ASP.NET Core MVC のDIコンテナを利用する
-Part.0(準備編)~
http://mrgchr.hatenablog.com/entry/2016/10/21/000000
-Part.1~
http://mrgchr.hatenablog.com/entry/2016/10/22/000000
-Part.2~
http://mrgchr.hatenablog.com/entry/2016/10/23/000000

**Autofac [#vd7b0259]
-Autofac について調べてみた その1 インスタンスのスコープ - Qiita~
https://qiita.com/TsuyoshiUshio@github/items/f4d83c76520a86c028dc
-AutofacというDIコンテナを触ってみた - かずきのBlog@hatena~
http://blog.okazuki.jp/entry/2014/02/26/232829

----
Tags: [[:プログラミング]], [[:.NET開発]], [[:.NET Core]], [[:ASP.NET]], [[:ASP.NET MVC]]

トップ   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS