如何在 ASP.NET Core 中设置强类型配置?

How to set up strongly typed configuration in ASP.NET Core?

This article and this other article 显示如何将您的应用程序设置映射到 ASP.NET 中的 class 5.

从第一个link开始:

    public void ConfigureServices(IServiceCollection services)
    {
        services.Configure<AppSettings>(Configuration.GetConfigurationSection("AppSettings"));
        services.AddMvc();
    }

但是,我没有在 services 上获得 Configure() 方法。所以要么我丢失了一个包裹,要么 API 已经改变了。是哪个?

我正在使用 RC1。我相信这些文章是基于 beta 4 的。

确保您使用的是 Microsoft.Extensions.DependencyInjection 包。软件包名称在 beta8

左右发生了变化

这个例子应该能满足您的需求。我有这个 class:

public class UIOptions
{
    public UIOptions()
    { }

    public int DefaultPageSize_SiteList { get; set; } = 10;
    public int DefaultPageSize_CountryList { get; set; } = 10;
    public int DefaultPageSize_StateList { get; set; } = 10;
    public int DefaultPageSize_RoleList { get; set; } = 10;
    public int DefaultPageSize_RoleMemberList { get; set; } = 10;
    public int DefaultPageSize_UserList { get; set; } = 10;
    public int DefaultPageSize_LogView { get; set; } = 10;

}

如果我想覆盖任何默认值,我可以将其添加到 appsettings.json:

"UIOptions": {
"DefaultPageSize_SiteList" : "5"
}

但是,如果我不做任何更改,那么 appsettings.json 文件中是否存在这些都没有关系。

在启动时我有这个:

services.Configure<UIOptions>(Configuration.GetSection("UIOptions"));

在我需要注入选项的控制器中,我对

有一个构造函数依赖
IOptions<UIOptions>

请注意,我从 IOptions

的 .Value 属性 中获取了我的 UIOptions 实例
using Microsoft.Extensions.OptionsModel;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.DependencyInjection.Extensions;

public class CoreDataController : Controller
{
    public CoreDataController(
        IOptions<UIOptions> uiOptionsAccessor
        )
    {

        uiOptions = uiOptionsAccessor.Value;
    }

    private UIOptions uiOptions;

}