GetService with IOptionsMonitor<Settings> returns 空对象

GetService with IOptionsMonitor<Settings> returns null object

我在 ASP.NET Core 3.0 应用程序上有以下内容:

IServiceCollection services = new ServiceCollection();

services.AddSingleton<Settings>(new Settings { DefaultPageSize = 40 });

IServiceProvider provider = services.BuildServiceProvider();

var result = provider.GetService<IOptionsMonitor<Settings>>();

最后一行 resultnull ...知道为什么吗?

services.AddSingleton<Settings>(...

不会自动将 SettingsIOptionsMonitor 功能相关联。

需要使用选项模式扩展之一将 Settings class 配置为服务集合的选项

例如

IServiceCollection services = new ServiceCollection();

// Options bound and configured by a delegate
services.Configure<Settings>(option => {
    option.DefaultPageSize = 40;
});

IServiceProvider provider = services.BuildServiceProvider();

var result = provider.GetService<IOptionsMonitor<Settings>>();

引用Options pattern in ASP.NET Core: Configure simple options with a delegate