如何将 Blazor 中的所有注册服务添加到 Simple Injector?
Posted
技术标签:
【中文标题】如何将 Blazor 中的所有注册服务添加到 Simple Injector?【英文标题】:How to add all registered services from Blazor to Simple Injector? 【发布时间】:2020-12-14 13:48:33 【问题描述】:我有一个服务器端 blazor 应用程序,我还在我的应用程序中使用 simple injector 进行其他依赖注入。
我想将所有服务从 blazor 注册到简单的注入器容器,否则我将不得不复制所有服务注册,但主要问题是有一些服务注册我不知道什么是正确的注册方式(通常来自一些依赖注入扩展库)。
例如,我需要类似的东西
public void ConfigureServices(IServiceCollection services)
// multiple service registration
services.RegisterSomeServices();
// ...
// some how register all services into simple injector container
container.SomeHowRegisterServices();
如何从 blazor 获取所有已注册的服务并在简单的注入器容器中注册?
【问题讨论】:
关于集成有some discussions,但在撰写本文时,仍然没有关于如何正确集成 Simple Injector 与 Blazor 组件的官方指导。 【参考方案1】:经过一段时间的搜索,我在文档中找到了ServiceCollection Integration Guide,这是一种将第三方服务集成到 Simple Injector 中的方法。
根据Cross wiring framework and third-party services,我需要做的是将跨线 blazor 服务转换为简单的注入器,所以对于我来说,我需要做的是
public void ConfigureServices(IServiceCollection services)
// multiple service registration
services.RegisterSomeServices();
// ...
// some how register all services into simple injector container
IServiceProvider provider = services
.AddSimpleInjector(simpleInjectorContainer)
.BuildServiceProvider(validateScopes: true);
// Ensures framework components are cross wired.
provider.UseSimpleInjector(simpleInjectorContainer);
【讨论】:
以上是关于如何将 Blazor 中的所有注册服务添加到 Simple Injector?的主要内容,如果未能解决你的问题,请参考以下文章
如何向服务器端 Blazor 项目添加控制器(而非视图)支持
将服务器端 Blazor 添加到现有 MVC Core 应用程序
除了 dbContext 之外,如何向 Blazor 中的服务添加参数?
如何通过 IdentityServer4 将 OpenId Connect 添加到 ASP.NET Core 服务器端 Blazor Web 应用程序?