Получить строку подключения через внедрение зависимостей - PullRequest
0 голосов
/ 16 июня 2019

Я разрабатываю приложение для блейзоров.Я хочу иметь строку подключения и какой-то другой ключ в классе в качестве службы.

Для этого я создал интерфейс

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 написано

Инициализатор поля не может ссылаться на нестатическое поле, метод или свойство DbConnector.Configuration

Простите за мой шаблон кодирования, поскольку я новичок в концепции DI.Пожалуйста, предложите, если есть другой и лучший способ сделать это.

Ответы [ 2 ]

1 голос
/ 16 июня 2019

Вы допустили синтаксическую ошибку, это должны быть средства доступа к свойствам выражения.= до =>

public string ConnectionString => Configuration.GetConnectionString();

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

Вместо этого вы попытались инициализировать их как поля.Поля инициализируют предварительный конструктор, поэтому не могут получить доступ к конфигурации.

0 голосов
/ 16 июня 2019
      services.AddConfiguration()  // enable Configuration Services

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