欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

如何在ASP.NET Core 的任意类中注入Configuration

程序员文章站 2022-06-25 09:20:39
遇到的问题我已经通读了 msdn 上关于 configuration 的相关内容,文档说可实现在 application 的任意位置访问 configuration .下面是 startup.cs 的...

遇到的问题

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