【发布时间】:2021-05-07 17:20:39
【问题描述】:
我有一个关于 C# 和 .NET Core 的问题。目的是创建一个基本模板,允许我使用 Serilog 作为日志服务并访问所有必要类中的应用程序设置。
因此,我的 Main() 方法如下所示:
static void Main(string[] args) {
var builder = new ConfigurationBuilder();
BuidConfig(builder);
Log.Logger = new LoggerConfiguration()
.ReadFrom.Configuration(builder.Build())
.CreateLogger();
try {
Log.Information("Starting...");
var host = Host.CreateDefaultBuilder()
.ConfigureServices((conext, services) => {
services.AddTransient<IADSyncSvc, ADSyncSvc>();
})
.UseSerilog()
.Build();
var svc = ActivatorUtilities.CreateInstance<ADSyncSvc>(host.Services);
svc.Run();
}
catch (Exception ex) {
Log.Fatal(ex, "Failed!");
}
finally {
Log.CloseAndFlush();
}
}
构建器配置将在此方法中创建:
static void BuidConfig(IConfigurationBuilder builder) {
builder.SetBasePath(Directory.GetCurrentDirectory())
.AddJsonFile("appsettings.json", optional: false, reloadOnChange: true)
.AddEnvironmentVariables();
}
基本上,这个类是我的应用程序的入口点,并在我的 ADSyncSvc 类中执行 Run() 方法。我的 ADSyncSvc 类如下所示:
public class ADSyncSvc : IADSyncSvc {
private readonly ILogger<ADSyncSvc> _log;
private readonly IConfiguration _config;
public ADSyncSvc(ILogger<ADSyncSvc> log, IConfiguration config) {
this._log = log;
this._config = config;
}
public void Run() {
}
}
这工作得很好,但我的问题是访问我已写入任何其他类的 appsettings.json 文件的 Serilog 和 Appsettings 配置。实现这一目标的最佳方法是什么?我应该如何修改我的配置以允许其他服务类访问此设置?
【问题讨论】:
-
阅读依赖注入。