【问题标题】:How can I access IOptions (or any settings) from other tiers of my .NET Core app?如何从我的 .NET Core 应用程序的其他层访问 IOptions(或任何设置)?
【发布时间】:2017-07-28 01:08:04
【问题描述】:

我已成功尝试并使用 .NET Core Web API 控制器中的 IOptions。

例如,这对我有用:

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

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

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

控制器 --calls--> 业务层 --calls--> 数据访问层

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

  • 我是不是搞错了?
  • 执行此操作的正确方法是什么?
  • 有没有办法让 IOptions 像 Controller 一样自动注入到构造函数中? (如果是这样,我如何在需要的地方实例化每个类?)

编辑:

  • 我并不真正关心依赖关系本身,而是通过一百万个“链接”层的信息流。

控制器(来自配置的连接字符串)--calls--> 业务层(连接字符串)--calls--> 数据访问层(连接字符串)

我只是以连接字符串为例。

谢谢。

【问题讨论】:

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


【解决方案1】:

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

【讨论】:

  • 谢谢。这为我指明了正确的方向。我是 @net-core 的新手,不清楚它如何处理 Startup.cs 中的 DI。然后,这进一步澄清了它:stackoverflow.com/questions/36904174/…我的问题太狭窄了,可以应用于任何横切关注点。
猜你喜欢
  • 2019-02-20
  • 2011-09-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多