我有一个.Net Core项目,在其中配置了不同的选项。现在看起来更复杂了,所以我需要将它们分成不同的方法。
例如,我注册了mongo db凭据选项,我需要将其移至简单的扩展方法:
services.Configure<DataAccess.MongoDB.Contracts.AppSettings.MongoDBSettings> options =>
{
options.ConnectionString
= GetConfigurationSection("MongoConnection:ConnectionString");
options.Database
= GetConfigurationSection("MongoConnection:Database");
});
预期如下:
services.ConfigureMongoDbSettings();
答案 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()
函数才能接收和直接使用配置部分。