c# - GetService 与 IOptionsMonitor<Settings> 返回 null 对象

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

我在 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>>();

最后一行结果null ...知道为什么吗?

最佳答案

services.AddSingleton<Settings>(...

不会自动将SettingsIOptionsMonitor 功能关联起来。

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

例如

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

关于c# - GetService 与 IOptionsMonitor<Settings> 返回 null 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58819299/

相关文章:

c# - 如何将错误消息从 C# 发送到 Ajax 以在客户端使用此错误消息的内容?

c# - 如何配置 tfs 构建代理来构建发布配置文件?

.net-core-3.0 - Microsoft.AspNetCore.Mvc 依赖项和 ASP.NET Core 3

c# - 在 Razor (chtml) 中渲染动态 View ,如何在 asp.net core 3.0 中将 FileProvider 添加到 razor?

c# - EF Core 3.0 SumAsync 触发聚合函数异常

c# - 如何将任何类型的日期转换为 dd/mm/yyyy

javascript - 将数组从代码隐藏例程传递到 javascript

c# - 在 cshtml 中重用编辑和新建 View 内容的 ASP.NET Core 特定方法

asp.net - 更改 ASP.NET Core 应用程序中的目标框架版本

c# - ASP.NET Core Serilog 未将属性推送到其自定义列