使用Json文件作为配置文件
需要引用的包
<PackageReference Include="Microsoft.Extensions.Configuration.Binder" Version="6.0.0" />
<PackageReference Include="Microsoft.Extensions.Configuration.Json" Version="6.0.0" />
<PackageReference Include="Microsoft.Extensions.DependencyInjection" Version="6.0.0" />
<PackageReference Include="Microsoft.Extensions.Options" Version="6.0.0" />
创建容器,用于注入
internal class ServiceContainer {
private static IServiceCollection? _services;
private static IServiceProvider? _serviceProvider;
public static void InitContainer(Action<IServiceCollection> register) {
if (_services == null) {
_services = new ServiceCollection();
}
register?.Invoke(_services);
}
public static T? GetService<T>() {
if (_serviceProvider == null) {
_serviceProvider = _services?.BuildServiceProvider();
}
return _serviceProvider!.GetService<T>();
}
}
构建Configuation
//创建configuartion建造者
IConfigurationBuilder configurationBuilder = new ConfigurationBuilder();
//绑定json 文件
IConfigurationRoot root = configurationBuilder.AddJsonFile("config.json", true, true).Build();
//json文件内config项绑定至对象Config,实现注入
service.AddOptions().Configure<Config>(e => root.GetSection("config").Bind(e));
简单使用
internal class Tech {
private readonly IOptionsMonitor<Config> _optionsConfig;
public Tech(IOptionsMonitor<Config> optionsConfig) {
_optionsConfig = optionsConfig;
}
public void Show() {
Console.WriteLine(_optionsConfig.CurrentValue.Address);
}
}