首页 新闻 会员 周边 捐助

.net Core 不在Controller 中读取 IOptions<SiteConfig> option

0
悬赏园豆:10 [已解决问题] 解决于 2021-07-13 15:25

我怕我说的不是很明白,特意贴出我看到怎么写的博客。
https://www.cnblogs.com/Leo_wl/p/5709762.html
然后我们在 Controller 中读取。

public class HomeController : Controller
{
    public SiteConfig Config;

    public HomeController(IOptions<SiteConfig> option)
    {
        Config = option.Value;
    }

    public IActionResult Index()
    {
        return View(Config);
    }
}

他说在Controller 中读取。如果我想在其他地方读取有办法做到?

谁能告诉我不在Controller 中读取。
怎么在其他类库里取IOptions<SiteConfig> option
如果我想在其他地方读取有办法做到?

LuoCore的主页 LuoCore | 初学一级 | 园豆:122
提问于:2018-09-11 14:10
< >
分享
最佳答案
0

刚好我也遇到了同样的问题,dudu 有帮忙解释了下,在控制器中是 构造注入的,当然可以在 starup.cs 里面注入,可以自定义一个静态的类 ,在startup.cs里面这么调用

DNLiServices.ServiceContext.RegisterServices(services);

然后在其他类库调用的话
//获取iconfig内容
string getconfigContext = DNLiServices.ServiceContext.GetService<IConfiguration>().GetConnectionString("MySqlConnection");
这么写
我的理解是将 根容器实例出来,然后获取根容器里面已经注入的服务 进行调用,不知道这样的理解有没有错误,有的话请看到的大神帮我纠正一下

收获园豆:10
DNLi | 菜鸟二级 |园豆:316 | 2018-09-12 15:34
其他回答(4)
1

要保证其他类已经注入到Service里,然后和controller一样,依赖注入就可以了

wdwwtzy | 园豆:114 (初学一级) | 2018-09-11 14:20
0

public class HomeController : Controller
{
public IActionResult Index()
{
return View(Configuration.GetSection("SiteConfig"));
}
}

我是猴子 | 园豆:210 (菜鸟二级) | 2018-09-11 14:22
0

构造函数注入。比如你想给class A注入SiteConfig的配置。

public class A
{
     private readonly SiteConfig Config; 
     public A(IOptions<SiteConfig> option) 
     {
         Config = option.Value;
     }
}

和在Controller中一样的用法

ohyex | 园豆:1696 (小虾三级) | 2018-09-11 15:30
0

类都有构造函数,写一个又不麻烦,就在构造函数里按你贴的代码写就可以,这么写挺好的啊

去海边生活 | 园豆:66 (初学一级) | 2018-09-29 15:12
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册