有没有办法解决容器中的依赖项(实际上是在嵌套的LifetimeScope中而不是在容器中注册的依赖项?
实际实施说明:
我有ApplicationContext
类(在其构造函数中注入了IServiceProvider
),其中包含当前用户的基本信息。它首先从IHttpContextAccessor
解析serviceProvider
,然后从httpContextAccessor.HttpContext
提取用户信息。 ApplicationContext
类已注入所有存储库/服务。
但是,在某些静态类中,我从静态IoC类(包装在其中的autofac容器)解析了ApplicationContext
类。而且我认为这是唯一的解决方案,因为我无法注入静态构造函数。
我正在实现事件总线,为此我创建了EventBusContext
类,该类从事件数据接收用户信息。
ApplicationContext
类尝试从EventBusContext
解析IServiceProvider
并从中提取用户信息ONLY如果它获得HttpContext
为空(这意味着该执行不是从Http Request开始的] >)。
EventBus
类从RabbitMQ接收事件后,将创建EventBusConext
类,向其中添加用户信息,然后将其动态注册到新创建的嵌套LifetimeScope
中,然后解析EventHandler
类并调用Handle方法(通过反射)。
一切正常!仅当
EventHandler
使用任何可从静态ApplicationContext
类解析IoC
类的类时,才会发生此问题,因为然后静态IoC
类在内部尝试从autofac容器(包装在其中)中解析EventBusContext
但它没有这样做。是否有任何方法可以解决容器中的依赖关系(实际上是在嵌套的LifetimeScope中而不是在容器中注册的依赖关系?实际实现的解释:我有ApplicationContext ...
我将重点关注最初的问题: