gpt4 book ai didi

autofac - 使用 autofac 在 SeriLog 丰富器中注入(inject)依赖项

转载 作者:行者123 更新时间:2023-12-03 22:22:25 25 4
gpt4 key购买 nike

我想创建一个 Serilog Enricher从依赖项中注入(inject)一些数据。 autofac 如何将我的依赖注入(inject)到丰富器中?

这是我的容器设置:

builder.Register((c, p) =>
{
return new LoggerConfiguration()
.Enrich.FromLogContext()
.Enrich.With<MyEnricherWhichCanAddMoreDataFromADependency>()
// ...
.CreateLogger();
}).As<ILogger>();

虽然浓缩器看起来像
public class MyEnricherWhichCanAddMoreDataFromADependency : ILogEventEnricher
{
public MyEnricherWhichCanAddMoreDataFromADependency(IDependency d)
{ ... do stuff with the dependency ... }
}

构造函数注入(inject)似乎不起作用。还是我做错了什么?

最佳答案

当你充实With<T>它所做的一切,从字面上看,is calling new T() .

如果你想通过 DI 传递浓缩器,你需要自己做。

builder.Register((c, p) =>
{
var e = c.Resolve<MyEnricherWhichCanAddMoreDataFromADependency>();
return new LoggerConfiguration()
.Enrich.FromLogContext()
.Enrich.With(e)
// ...
.CreateLogger();
}).As<ILogger>();

关于autofac - 使用 autofac 在 SeriLog 丰富器中注入(inject)依赖项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45774780/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com