如何从我的.NET Core应用程序的其他层访问IOptions(或任何设置)?

时间:2017-07-27 16:07:36

标签: c# .net asp.net-core

我已成功尝试并使用了.NET Core Web API Controller中的IOptions。

例如,这对我有用:

public MyController(IOptions<MySettings> options)
{
    // I can access these _options from any method in this Controller.
    _options = options.Value;
}

但是,我需要从我的应用程序中的其他层访问我的IOptions。

例如,也许我有这个......

Controller --calls - &gt;业务层 - 呼叫 - &gt;数据访问层

我真的不想在调用链中传递IOptions参数。我将MySettings放在自己的程序集中,让所有图层都可以访问它。

  • 我接近这个错误吗?
  • 这样做的正确方法是什么?
  • 有没有办法让IOptions自动注入到构造函数中,如Controller? (如果是这样,我如何实例化我需要的每个类?)

编辑:

  • 我并不真正关心依赖性本身,而是信息流通过一百万&#34;链接&#34;层。

控制器(来自配置的连接字符串) - 调用 - &gt;业务层(连接字符串) - 调用 - &gt;数据访问层(连接字符串)

我刚用连接字符串作为例子。

感谢。

1 个答案:

答案 0 :(得分:2)

你不必将它传递给链条。在Startup.cs中注册IOptions时,它可以访问所有层。 只要该层依赖于IOptions并且DI容器知道使用哪种类型来实例化它,DI容器就不关心IOptions的使用位置。