【问题标题】:Inject IOptionsMonitor with Autofac - using Options pattern使用 Autofac 注入 IOptionsMonitor - 使用选项模式
【发布时间】:2022-06-28 16:03:47
【问题描述】:

我在使用 Autofac 注入 IOptionsMonitor 时遇到问题。

使用 IOptions 一切正常,但我无法使用 IOptionsMonitor 使其正常工作。

对于 IOptions 的注册如下所示:

var cfg = _configuration.GetSection("GlobalAppSettings").Get<GlobalAppSettings>();
builder.Register(c => Options.Create(cfg)).SingleInstance();

现在在构造函数中:

public class ConfigurationReader : IConfigurationReader
{
    public GlobalAppSettings GlobalAppSettings { get; }

    public ConfigurationReader(IOptions<GlobalAppSettings> _globalAppSettings)
    {
        GlobalAppSettings = _globalAppSettings.Value;
    }
 }

但是如何使它与 IOptionsMonitor 一起工作?这是一种使用“Options.Create()”像 IOptions 一样创建它的方法吗?

【问题讨论】:

  • 你能解决这个问题吗?我对 IOptionsMonitor 也有同样的担忧。
  • 很遗憾没有...

标签: c# dependency-injection autofac options ioptionsmonitor


【解决方案1】:

您需要将以下 Nuget 包添加到您的项目中:

  • Autofac.Extensions.DependencyInjection
  • Microsoft.Extensions.Options

使用 AddOptions() 方法创建一个新的 ServiceCollection。然后通过 Populate() 方法将 ServiceCollection 添加到您的 Autofac 构建器中。

var serviceCollection = new Microsoft.Extensions.DependencyInjection.ServiceCollection().AddOptions();
var builder = new Autofac.ContainerBuilder();
builder.Populate(serviceCollection);
var container = builder.Build();

之后,你可以注入 IOptions、IOptionsSnapshot 和 IOptionsMonitor。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-07-14
    • 1970-01-01
    • 2014-12-15
    • 1970-01-01
    • 1970-01-01
    • 2016-08-06
    • 1970-01-01
    相关资源
    最近更新 更多