眠いしお腹すいたし(´・ω・`)

C#関連を主に書きます。掲載内容は個人の見解であり、所属する企業を代表するものではありません。

ASP.NET CoreでDI設定をappsettings.jsonに記述して設定してみよう('◇')ゞ

ごあいさつ

この前クルマ買い換えたんです。

その時にディーラーの営業さん(サーファー)に

ダム行くのに高速とか山道走るから性能のいいクルマが欲しいみたいな話をしたら・・・・

結婚の心配をされました\(^o^)/

そんなのとうに諦めとるわ、こらぁ(# ゚Д゚)

本題

最近のWebのUI周りのトレンドを勉強するためにASP.NET Coreを始めてみたら WebのUIに辿り着く前にASP.NET Coreで遊んでます。

このフレームワークASP.NET MVCより色々とよくできてると思います。

今のところ不満だなぁって思うところが見つからないです。

ASP.NET CoreはDIありきで作られているんですが

Unity(ゲームじゃない方)とかではweb,configとかUnity.configにRegisterの設定を記載してLoadConfigurationを呼ぶと設定どおりにContainerに登録されるような仕組みがあるのですが、ASP.NET CoreのDIにはないっぽいのです。

ですのでappsettings.jsonに設定を記載してconfigurationするプログラムを簡単に書いてみました。

まずはこんな拡張メソッドを作ってみます。

gist.github.com

appsetting.jsonから設定をオブジェクトで作成する部分はしばやさんの記事から

blog.shibayan.jp

ようするに

appsettings.jsonからRegisterSettingクラスを起こしてIServiceCollectionに登録している感じです。

Assemblyが指定されている場合にはAssembly.Loadを、指定されていなければ現在のAssemblyを使ってType型を手に入れています。

appsettings.json

gist.github.com

こんな感じで指定してあげれば良いです。

最後に呼び出しは

StartupクラスのConfigureServiceメソッドにて

gist.github.com

こんな感じで登録してあげればよい感じです。

ではでは( `ー´)ノ