我怕我说的不是很明白,特意贴出我看到怎么写的博客。
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
如果我想在其他地方读取有办法做到?
刚好我也遇到了同样的问题,dudu 有帮忙解释了下,在控制器中是 构造注入的,当然可以在 starup.cs 里面注入,可以自定义一个静态的类 ,在startup.cs里面这么调用
DNLiServices.ServiceContext.RegisterServices(services);
然后在其他类库调用的话
//获取iconfig内容
string getconfigContext = DNLiServices.ServiceContext.GetService<IConfiguration>().GetConnectionString("MySqlConnection");
这么写
我的理解是将 根容器实例出来,然后获取根容器里面已经注入的服务 进行调用,不知道这样的理解有没有错误,有的话请看到的大神帮我纠正一下
要保证其他类已经注入到Service里,然后和controller一样,依赖注入就可以了
public class HomeController : Controller
{
public IActionResult Index()
{
return View(Configuration.GetSection("SiteConfig"));
}
}
构造函数注入。比如你想给class A
注入SiteConfig
的配置。
public class A
{
private readonly SiteConfig Config;
public A(IOptions<SiteConfig> option)
{
Config = option.Value;
}
}
和在Controller
中一样的用法
类都有构造函数,写一个又不麻烦,就在构造函数里按你贴的代码写就可以,这么写挺好的啊