C# 如何拆分启动中配置的选项
我有一个.Net核心项目,我在其中配置了不同的选项。现在它看起来更复杂了,所以我需要将它们分成不同的方法 例如,我注册了mongo db凭据选项,我需要将其移动到简单的扩展方法:C# 如何拆分启动中配置的选项,c#,asp.net,.net,asp.net-core,C#,Asp.net,.net,Asp.net Core,我有一个.Net核心项目,我在其中配置了不同的选项。现在它看起来更复杂了,所以我需要将它们分成不同的方法 例如,我注册了mongo db凭据选项,我需要将其移动到简单的扩展方法: services.Configure<DataAccess.MongoDB.Contracts.AppSettings.MongoDBSettings> options => { options.ConnectionString
services.Configure<DataAccess.MongoDB.Contracts.AppSettings.MongoDBSettings> options =>
{
options.ConnectionString
= GetConfigurationSection("MongoConnection:ConnectionString");
options.Database
= GetConfigurationSection("MongoConnection:Database");
});
将代码移动到如下类中(可以随意命名): 或者,您可以将配置部分本身传递给它,这是核心团队对某些服务所做的:
services.ConfigureMongoDbSettings(Configuration.GetConfigurationSection("MongoConnection"));
显然,通过这种方式,您必须更改上面的
ConfigureMongoDbSettings()
函数,以便直接接收和使用配置部分。感谢您的快速回复。所以在这种情况下,我需要通过IConfiguration?是的,对不起。将i配置
传递给它。我会更新我的答案。有没有办法把它注入到静态类的IConfiguration中?这是一个静态类。你怎么能在里面注射东西?东西被注入构造函数中,然后将它们分配给类字段并在方法中使用它们。静态函数无法访问类字段,因为它们无法访问类的实例。是的,我知道静态类不能像那样使用…我正在检查是否有任何方法可以访问静态类内部的配置而不向外传递。
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;
}
}
services.ConfigureMongoDbSettings(Configuration);
services.ConfigureMongoDbSettings(Configuration.GetConfigurationSection("MongoConnection"));