【发布时间】:2016-10-03 18:53:44
【问题描述】:
我在我的应用程序中使用 Serilog 进行日志记录。当我配置记录器时,我有这样的代码:
var log = new LoggerConfiguration()
.Enrich.With<MySerilogEnricher>()
.ReadAppSettings()
.CreateLogger();
我想将一些依赖项注入到我的MySerilogEnricher 类中,但是当我尝试时,我得到了这个编译器错误:
错误 CS0310:“SerilogEnricher”必须是非抽象类型,带有 公共无参数构造函数,以便将其用作参数 泛型类型或方法中的“TEnricher” 'LoggerEnrichmentConfiguration.With()'
我明白为什么会收到此错误,但我没有找到简单的解决方法。理想情况下,我可以像这样使用WithInstance 调用:
var instance = new MySerilogEnricher(myDependency);
var log = new LoggerConfiguration()
.Enrich.WithInstance<MySerilogEnricher>(instance)
.ReadAppSettings()
.CreateLogger();
有没有办法将依赖项传递给MySerilogEnricher?我可能有一个包含 MySerilogEnricher 的类,并在属性中将依赖项传递给它,但这看起来很混乱。
【问题讨论】:
标签: c# dependency-injection serilog