是否可以在AUTOFAC的解决方案中获取请求服务类型?
我正在使用 serilog 和 autoFac 我想使用 ilogger
使用 .forcontext()
在解决方案时,并用要注入的对象的类型 ilogger
。使用调试器,我可以走 icomponentContext
,看看我想要什么,但是要获得的类型都是内部的我的代码。我的注册代码(如上所述不起作用)看起来像:
builder.RegisterType<SerilogLoggerFactory>().As<ISerilogLoggerFactory>().SingleInstance();
builder.Register(context =>
{
var defaultResolveRequestContext = (Autofac.Core.Resolving.Pipeline.DefaultResolveRequestContext)context;
var resolveOperation = (Autofac.Core.Resolving.ResolveOperation)defaultResolveRequestContext.Operation;
var initiatingRequestService = (Autofac.Core.TypedService)resolveOperation.InitiatingRequest.Service;
return context.Resolve<ISerilogLoggerFactory>().Create().ForContext(initiatingRequestService.ServiceType);
});
defaultresolverequestcontext
, resolve> resolveOperation
和 initiatingRequest
aintiatingRequest 都是不可接受的。保护水平。
任何想法或想法都将不胜感激。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
给定的目标是为给定的请求类型注入正确的
ilogger
,您可能需要查看寄存器ilogger
,它将适当的参数添加到 resolve 链条中,以便将其正确设置。Given the goal is to inject the right
ILogger
for a given requesting type, you may want to look at the log4net example in the documentation and adapt it. Basically, rather than trying to register theILogger
, it adds the appropriate parameter to the resolve chain so it'll be set up correctly.感谢@travis Illig的响应,我们创建了以下实现:
Thanks to @Travis Illig's response, we created the following implementation: