如何从autofac容器解析依赖性(在嵌套LifetimeScope中注册)

问题描述 投票:1回答:1

有没有办法解决容器中的依赖项(实际上是在嵌套的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 ...

c# asp.net autofac event-bus
1个回答
2
投票

我将重点关注最初的问题:

© www.soinside.com 2019 - 2024. All rights reserved.