遇到的问题

我已经通读了 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 的资料请关注www.887551.com其它相关文章!