首页 > 解决方案 > Autofac 模块缺少准备事件

问题描述

我们有一个使用 v5 之前创建的 Autofac 模块,现在我们正在使用使用 v6+ 的升级 nuget 包,我们在调用项目中遇到降级错误。因此强制升级 IComponentRegistration 不再有我们可以在 LoggerModule 中使用的 Preparing 事件。 在此处输入图像描述

有谁知道需要做什么才能使这个模块的 OnPreparing 订阅支持版本 6+?

标签: c#autofac

解决方案


在此处查看升级文档:https ://autofaccn.readthedocs.io/en/latest/whats-new/upgradingfrom5to6.html

RegistrationBuilder.RegistrationData 不再公开已配置的 ActivatedHandlers、ActivatingHandlers 或 PreparingHandlers,并且 IComponentRegistration 不再公开 Preparing、Activating 或 Activated 事件。

现在,所有 Autofac 事件都作为添加到解析管道的 CoreEventMiddleware 实现。

如果您需要检查添加到注册的事件处理程序集,您可以检查注册的中间件以查找 CoreEventMiddleware 的实例:

// Check if the registration has an OnActivated handler.
if (registration.ResolvePipeline.Middleware.Any(c => c is CoreEventMiddleware ev && ev.EventType == ResolveEventType.OnActivated))
{
}

新的记录器示例也可能对https://autofaccn.readthedocs.io/en/latest/examples/log4net.html有所帮助:


推荐阅读