如何在ASP.NET Core 的任意类中注入Configuration
遇到的问题
我已经通读了 msdn 上关于 configuration 的相关内容,文档说可实现在 application 的任意位置访问 configuration .
下面是 startup.cs 的模板代码。
我知道可以通过 di 的方式将 configuration 注入到 controller,service,repository 等地方,但在真实项目中,会有很多类是在这三块之外的。
请问我如何在这三大块之外实现 configuration 的注入呢?换句话说:可以在任意类中实现 configuration 的注入... ????
解决方案
在 .net core 中你可以将 iconfiguration 作为参数直接注入到 class 的构造函数中,这本身就是可以的,如下代码所示:
接下来要做的就是 new myclass(),很显然这样做是不行的,因为你的构造函数还需要一个 iconfiguration 类型的参数,所以你需要将 new myclass() 塞入到 asp.net core 的 di 链中。
思路也很简单。
- 将 myclass 注入到 servicecollection 容器中
- 生成 myclass 实例
在 myclass 的调用方处通过 di 生成实例,这里以 controller 处为例,如下代码所示:
这样是不是就完美的实现了在 myclass 中使用 configuration 了?
还有一种更简单粗暴的做法,无需注入, 只需定义一个静态的类,在 startup 中将 iconfiguration 赋值给该静态类保存即可,参考代码如下:
然后就可以在项目的各处访问 myappdata.configuration 啦。
总结
在 asp.net 时代,读取配置文件真的是一点都不需要操心,一个 configurationmanager 走天下????????????,比如下面的代码:
反倒在 asp.net core 中却有点懵逼了,就像题主说的,我想在任意类中都可以读取 configuration ????????????,问题的差异来自于 asp.net core 使用了 di先行 的打法,哈哈,忘了过去吧,从 ♥ 开始 ...
以上就是如何在 asp.net core 的任意类中注入configuration 的详细内容,更多关于asp.net core 注入configuration 的资料请关注其它相关文章!