我有一个用例(带有登录的应用程序,然后是具有不同功能的各种页面进行导航),我在ConfigureServices
方法中注册了我的大部分服务(就像通常那样),因此在我的实际(UI)执行之前程序。
然而,我有一些服务,我只注册为假人(甚至根本不注册),因为这些服务应该在我登录到 Web 服务后才设置。在这个登录过程中,不仅检查用户是否有效,而且在用户验证后得到各种配置数据。其中一些数据本身需要(例如用户货币),但其他数据用于确定应该使用哪个服务实现。甚至其他数据也被用作实现本身;意味着我通过 HTTP GET 获得一个对象的实例(实现特定的接口IMyInterface
),并希望将此实例注册为IMyInterface
.
然后应该将此配置数据(或相应的服务)添加回我的IServiceProvider
,以便可以将它们注入到稍后将显示的页面中。这就是我的问题所在:
IServiceProvider
在已经构建之后,有没有办法在运行时稍后添加服务实现?请记住,如果可能的话,我只想使用来自Microsoft.Extensions.DependencyInjection
( IServiceCollection
,IServiceProvider
等) 的东西,而不是第三方容器(我知道这适用于例如 DryIoC)。如果我能够添加IOptions
到IServiceProvider
稍后的执行中,部分帮助是有帮助的,但我更有可能需要添加服务实现。