有什么方法可以解决容器中的依赖关系(实际上是在嵌套的 LifetimeScope 中注册的,而不是在容器中注册的)?
实际执行说明:
我有包含当前用户的基本信息的ApplicationContext类(在其构造函数中注入)。IServiceProvider它首先解析IHttpContextAccessorfrom serviceProvider,然后从 中提取用户信息httpContextAccessor.HttpContext。ApplicationContext类被注入到所有存储库/服务中。
但是,在一些静态类中,我正在ApplicationContext从静态 IoC 类(包装在其中的 autofac 容器)解析类。我认为这是唯一的解决方案,因为我无法注入静态构造函数。
我正在实现事件总线,我为其创建了EventBusContext从事件数据接收用户信息的类。
ApplicationContext仅当它获取为 null 时(这意味着此执行不是从 Http Request 开始) ,类才会尝试解析并EventBusContext从中IServiceProvider提取用户信息。HttpContext
一旦EventBus类从 RabbitMQ 接收到事件,它就会创建EventBusConext类,将用户信息添加到其中,并将其动态注册到新创建的嵌套中LifetimeScope,然后解析该类EventHandler并调用 Handle 方法(通过反射)。
一切都很完美! 仅当使用任何从静态类EventHandler解析类的类时才会出现此问题,因为静态类在内部尝试从 autofac 容器(包装在其中)解析,但未能成功。ApplicationContextIoCIoCEventBusContext