如何在标准类库中阅读.Net Core配置?

时间:2016-11-21 13:58:20

标签: .net-core asp.net-core-webapi

今天(2016年11月11日)我下载了新的Visual Studio 2017 RC,安装了.Net Core 1.1并设置了一个Web Api项目( ASP.NET核心Web应用程序(.NET Core)) 。然后我按照how to read app settings from a config file上的说明进行操作。这很好。

然后我在同一个解决方案中创建了一个新项目。这是 .NET Core 部分下的类库(.NET标准)。我添加了一个带有接口的类,并使用默认的依赖注入进行设置。

最后,我尝试通过构造函数注入在类库中使用配置。我收到此错误消息:

  

类型或命名空间名称' IOptions<>'无法找到

这是我的类库中的类:

public class Firebase : IDatabase
{
    public Firebase(IOptions<AppSettings> appSettings)
    {
        //string basePath = 
    }
}  

这是Startup.cs中的ConfigureServices方法:

public void ConfigureServices(IServiceCollection services)
    {
        // Add framework services.
        services.AddMvc();
        services.AddTransient<IDatabase, Firebase>();

        // Set up configuration files.
        services.AddOptions();
        services.Configure<AppSettings>(options => Configuration.GetSection("AppSettings").Bind(options));
    }  

我尝试添加

using Microsoft.Extensions.Options;  

使其编译,但灯泡告诉我这是一个不必要的参考。

我错过了什么?这不可能吗? .NET Core有一个特殊的类库吗?

1 个答案:

答案 0 :(得分:3)

使用IOptions{T}是.NET Core中的正确方法。 Visual Studio 2017表示存在不必要的使用。这有点令人困惑,因为当指针在Microsoft.Extensions.Options上使用时,Visual Studio会指示这一点。查看Visual Studio提出的建议,它不会删除Microsoft.Extensions.Options使用但是使用其他e.q. `系统。