通过依赖注入获取连接字符串

时间:2019-06-16 06:28:33

标签: c# asp.net-core .net-core blazor-server-side

我正在开发blazor应用程序。我想在服务类中包含连接字符串和其他一些键。

为此,我创建了一个界面

interface IDbConnector
{
    string ConnectionString { get; set; }

    bool SomeKey { get; set; }
}

在我的课堂上,我想拥有类似的东西

using Microsoft.Extensions.Configuration;
    public class DbConnector : IDbConnector
    {
        private IConfiguration Configuration { get; set; }

        public DbConnector(IConfiguration configuration)
        {
            Configuration = configuration;
        }
        public string ConnectionString = Configuration.GetConnectionString();

        public bool SomeKey = Configuration.GetSection("xyz");
    }

我可以通过

将其注册为服务
services.AddScoped<IDbConnector, DbConnector>();

但是在DbConnector类中,它说

  

fiels初始化程序不能引用非静态字段,方法或   属性DbConnector.Configuration

请原谅我的编码模式,因为我是DI概念的新手。请建议是否还有另一种更好的方法。

2 个答案:

答案 0 :(得分:1)

您犯了语法错误,这些错误应该是表达式主体属性访问器。 ==>

public string ConnectionString => Configuration.GetConnectionString();

public bool SomeKey => Configuration.GetSection("xyz");

相反,您尝试将它们初始化为字段。字段会初始化预构造函数,因此无法访问配置。

答案 1 :(得分:-1)

      services.AddConfiguration()  // enable Configuration Services

       var config = new WeblogConfiguration();
       Configuration.Bind("Weblog", config);      //  <--- This
       services.AddSingleton(config);