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するプログラムを簡単に書いてみました。
まずはこんな拡張メソッドを作ってみます。
appsetting.jsonから設定をオブジェクトで作成する部分はしばやさんの記事から
ようするに
appsettings.jsonからRegisterSettingクラスを起こしてIServiceCollectionに登録している感じです。
Assemblyが指定されている場合にはAssembly.Loadを、指定されていなければ現在のAssemblyを使ってType型を手に入れています。
appsettings.jsonは
こんな感じで指定してあげれば良いです。
最後に呼び出しは
StartupクラスのConfigureServiceメソッドにて
こんな感じで登録してあげればよい感じです。