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

-戻る
--[[ASP.NET]]
--[[.NET Core]]
--[[.NET Core における DI]]
--[[ASP.NET Core]] > [[ASP.NET Coreへの移行]]

* 目次 [#c961339d]
#contents

*概要 [#rb685d9d]
[[参考>.NET Core における DI#pc1d5785]]

*詳細 [#ec2347ad]

**構成 [#i8e6b534]
[[参考>.NET Core における DI#qbc1fa8c]]

※ 詳しくは[[コチラ>#jec03fd1]]を参照。

**対象 [#zecaeea3]

***[[Startup>ASP.NET Coreへの移行#g42f0f08]] [#xa0350c3]
-ConfigureServicesメソッドでの登録メソッドによりライフサイクルが変わってくる。
--AddSigleton   : アプリケーションにて共有のシングルトンインスタンスを作成する。
--AddScoped     : Webリクエストごとに新しいインスタンスを作成する。
--AddTransient  : Dependencyが要求されるごとに新しいインスタンスを作成する。

-Configureメソッドには、ConfigureServicesメソッドで登録したサービスが、~
IApplicationBuilderや引数を経由で渡されるので、これを使用して構成する。

***Controller [#q1ed58f9]
-Constructorインジェクション~
MVCのControllerは、constructorを使用しサービスを挿入する。

-Actionインジェクション~
Action methodのパラメタとしてサービスを挿入することもできる。

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

***View [#h7d59b85]
-Viewインジェクション

--@inject [サービスの型] [変数名]
--Modelプロパティ風(@model ViewModelのクラス型)

>に書く。

-参考
--ビューへの依存関係の挿入 | Microsoft Docs~
https://docs.microsoft.com/ja-jp/aspnet/core/mvc/views/dependency-injection

**コンテナを変更する。 [#wf1daf74]
ASP.NET Coreでは、

-既定では、Microsoft.Extensions.DependencyInjectionを使用する。
-ConfigureServices メソッドが、IServiceProvider を返すようにシグネチャを変更する方法で、~
[[Autofac>#vd7b0259]] (Autofac.Extensions.DependencyInjection)など、別のコンテナに切替可能らしい。

*参考 [#f9f43786]

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

-ASP.NET Core でのアプリケーションのスタートアップ~
https://docs.microsoft.com/ja-jp/aspnet/core/fundamentals/startup

**Qiita [#t0d72606]
-.NET 系の DI コンテナ~
https://qiita.com/okazuki/items/239ca5ef46e5a085e085

-DI (依存性注入) って何のためにするの~
かわからない人向けに頑張って説明してみる~
https://qiita.com/okazuki/items/a0f2fb0a63ca88340ff6

-DI って何でするのかわからない人向けに
頑張って説明してみる「本来の意味」~
https://qiita.com/okazuki/items/0c17a161a921847cd080

-DI コンテナは自分で new しないでフレームワークを探そう~
https://qiita.com/okazuki/items/6327d05fd84fd5de3299

-DIコンテナのテスト以外での利点について (7/15修正)~
https://qiita.com/crexista/items/606976d941728a90b42b

-「DIコンテナのテスト以外での利点について」の自分の感想~
https://qiita.com/okazuki/items/a470e05c1a263921a59c

**時が癒す [#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というDIコンテナを触ってみた - かずきのBlog@hatena~
http://blog.okazuki.jp/entry/2014/02/26/232829

-Qiita
--Autofac について調べてみた
---その1 インスタンスのスコープ~
https://qiita.com/TsuyoshiUshio@github/items/f4d83c76520a86c028dc
---その2 インスタンスのスコープ補足~
https://qiita.com/TsuyoshiUshio@github/items/066e6feae4b4f7c1e0b8
---その3 WebApi とのインテグレーション~
https://qiita.com/TsuyoshiUshio@github/items/f4d83c76520a86c028dc

--ASP.NET Coreアプリの~
Dependency Injection処理を別のDIコンテナに委譲する(完全版)~
https://qiita.com/yamaokunousausa/items/bc81d8498ecf62da0208

--ASP.NET CoreでIServiceProviderに登録される情報を確認する~
https://qiita.com/yamaokunousausa/items/0d5450ff6b50ebe7129e

--ASP.NET Coreで設定ファイルによるDIの設定を行い~
環境によって使用されるコンポーネントを変更する~
https://qiita.com/yamaokunousausa/items/bd5ee2d0af79aa55923d

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


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