Как разделить параметры, настроенные при запуске - PullRequest
1 голос
/ 15 октября 2019

У меня есть проект .Net Core, в котором я настроил различные параметры. Теперь это выглядит более сложным, поэтому мне нужно разделить каждый на разные методы.

Например, я зарегистрировал опции учетных данных mongo db, и мне нужно переместить это в простые методы расширения:

services.Configure<DataAccess.MongoDB.Contracts.AppSettings.MongoDBSettings> options =>
        {
            options.ConnectionString
                = GetConfigurationSection("MongoConnection:ConnectionString");
            options.Database
                = GetConfigurationSection("MongoConnection:Database");
        });

Ожидается что-то вроде этого:

services.ConfigureMongoDbSettings();

1 Ответ

1 голос
/ 15 октября 2019

Переместите свой код в класс, подобный этому (вы можете назвать его как угодно):

public static class MongoDbSettingsCollectionExtensions {
    public static IServiceCollection ConfigureMongoDbSettings(
                  this IServiceCollection services,
                  IConfiguration Configuration) {
      services.Configure<DataAccess.MongoDB.Contracts.AppSettings.MongoDBSettings> options =>
        {
            options.ConnectionString
                = Configuration.GetConfigurationSection("MongoConnection:ConnectionString");
            options.Database
                = Configuration.GetConfigurationSection("MongoConnection:Database");
        });
      return services;
    }
}

Это позволит вам вызвать его в Startup, как вы предложили:

services.ConfigureMongoDbSettings(Configuration);

В качестве альтернативы вы можете передать сам раздел конфигурации, что и сделала команда Core с некоторыми службами:

services.ConfigureMongoDbSettings(Configuration.GetConfigurationSection("MongoConnection"));

Очевидно, что таким образом вам придется изменить функцию ConfigureMongoDbSettings()выше, чтобы получить и работать непосредственно с разделом конфигурации.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...