您可以尝试将 .NET Core 中的 IOptions 模式注入到您的类中。
请按如下方式执行此操作:
假设您的 appSettings.json 如下所示:
"AppSettings": {
"AppValue": "1"
}
创建一个类来保存您的配置值:
public class AppConfiguration
{
public AppConfiguration() { }
public string AppValue { get; set; }
}
在 Startup.cs 中将配置类添加到服务集合中,如下所示:
using Microsoft.Extensions.Configuration;
public void ConfigureServices(IServiceCollection services)
{
services.Configure<AppConfiguration>(Configuration.GetSection("AppSettings"));
…
}
在您的类中,将 IOptions 注入到类中。将内部变量分配给配置。引用类中的配置数据并获取设置属性:
using Microsoft.Extensions.Options;
…
public class MyService: IMyService
{
private readonly IOptions<AppConfiguration> _appConfiguration;
public MyService(..., IOptions<AppConfiguration> appConfiguration, …)
{
...
_appConfiguration = appConfiguration;
}
public SomeTask()
{
// Do something with _appConfiguration.Value.AppValue;
}
}
这将允许您的自定义类从 appSettings.json 获取值。
此外,对于您的应用程序构建器,建议您的应用程序管道使用如下启动类:
Host.CreateDefaultBuilder(args)
.UseStartup<Startup>();
那么你的 Startup 类应该有以下方法:
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
}
public void ConfigureServices(IServiceCollection services)
{
}
当您创建新的 .NET Core Web 应用程序时,可以重新生成类似的骨架启动类。尝试上面的方法并让我知道效果如何。