如何解决我如何从 appsettings.json 访问工作服务中任何类中的设置?
我正在 .NET 5 中创建一个工作服务应用程序。在工作服务中,如果您想从 appsettings.json 访问任何配置,您必须将它们从 program.cs 文件注入工作类。
当我想访问 worker.cs 以外的类中的配置时会出现问题。我必须将所有内容注入到 worker.cs 中才能将它们用于其他类并从它们中调用类。
例如:我有 A 类和 B 类。我想访问 B 类中的一些设置。
appsettings.json
{
"Settings":
{
"Setting1" : "Value1","Setting2" : "Value2"
}
}
Settings.cs
public class Settings
{
public string Setting1 {get;set;}
public string Setting2 {get;set;}
}
Program.cs
public class program
{
public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args).UseWindowsService()
.ConfigureAppConfiguration((context,config) =>
{
//App configurations
})
.ConfigureServices((hostContext,services) =>
{
IConfiguration configuration = hostContext.Configuration;
Settings config = configuration.GetSection("Settings").Get<Settings>();
services.AddSingleton(Settings);
services.AddHostedService<Worker>();
}).UseSerilog();
}
Worker.cs
public class Worker : BackgroundService
{
private Settings _s;
public Worker(ILogger<Worker> logger,Settings settings)
{
this._s = settings;
}
public override async Task StartAsync(CancellationToken cancellationToken)
{
A a = new A(_s);
}
}
A.cs
public class A
{
private Settings _s;
public A(Settings settings)
{
this._s = settings;
}
B b = new B(_s);
}
B.cs
public class B
{
private Settings _s;
public B(Settings setting)
{
this._s = setting;
}
//some methods that use _s
}
现在我不想在 Worker & Class A 中注入 Settings 对象,然后在 Class B 中使用它。 有什么办法可以在 Program.cs 中配置它并直接在 B 类中使用它??
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。