如何拆分启动中配置的选项

时间:2019-10-15 16:35:06

标签: c# asp.net .net asp.net-core

我有一个.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 个答案:

答案 0 :(得分:1)

将您的代码移动到这样的类中(您可以随意命名):

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()函数才能接收和直接使用配置部分。