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

时间:2015-12-29 17:10:58

标签: c# asp.net-core configuration

This articlethis other article展示了如何将您的appsettings映射到ASP.NET 5中的类。

从第一个链接:

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

但是,我没有在Configure()上获得services方法。所以要么我错过了一个包,要么API已经改变了。这是什么?

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

2 个答案:

答案 0 :(得分:1)

此示例应该为您提供所需内容。我有这门课:

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;

}

答案 1 :(得分:0)

确保您使用的是Microsoft.Extensions.DependencyInjection包。软件包名称在beta8附近发生了变化