Kun*_*Hsu 0 c# asp.net dependency-injection asp.net-core
我有一个SvcPool类,它注册为单例服务,
public void ConfigureServices(IServiceCollection services)
{
services.AddSingleton<SvcPool, SvcPool>();
}
Run Code Online (Sandbox Code Playgroud)
SvcPool会根据构造函数内部的配置初始化多个Svc ,但是Svc类构造函数需要一个ILogger。
如何将ILogger直接调用到 Svc 的构造函数?
服务中心
public Svc(int id, string host, ILogger<Svc> logger)
{
...
}
Run Code Online (Sandbox Code Playgroud)
SvcPool.cs
public SvcPool(IOptions<AppConfig> config, ILogger<SvcPool> logger)
{
foreach (var svcConfig in config.SvcList)
{
Svc svc = new Svc(svcConfig.ID, svcConfig.Host, ???);
}
}
Run Code Online (Sandbox Code Playgroud)
您可以在实例化时使用ILoggerFactory和创建ILogger实例Svc。
public SvcPool(IOptions<AppConfig> config, ILogger<SvcPool> logger, ILoggerFactory loggerFactory)
{
foreach (var svcConfig in config.Value.SvcList)
{
Svc svc = new Svc(svcConfig.ID, svcConfig.Host, loggerFactory.CreateLogger<Svc>());
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2339 次 |
| 最近记录: |