#c# #dependency-injection #blazor #simple-injector
#c# #внедрение зависимостей #blazor #simple-инжектор
Вопрос:
У меня есть приложение blazor на стороне сервера, и я также использую simple injector для других инъекций зависимостей в моем приложении.
Я хочу зарегистрировать все сервисы из blazor в контейнер simple injector, потому что в противном случае мне придется дублировать всю регистрацию сервисов, но также основная проблема заключается в том, что есть некоторые регистрации сервисов, которые я не знаю, как правильно зарегистрировать (обычно происходит из некоторой библиотеки расширений для внедрения зависимостей).
Например, мне нужно что-то вроде
public void ConfigureServices(IServiceCollection services)
{
// multiple service registration
services.RegisterSomeServices();
// ...
// some how register all services into simple injector container
container.SomeHowRegisterServices();
}
Как я могу получить все зарегистрированные сервисы от blazor и зарегистрироваться в контейнере simple injector?
Комментарии:
1. Есть некоторые обсуждения по интеграции, но на момент написания статьи до сих пор нет официального руководства о том, как правильно интегрировать Simple Injector с компонентами Blazor.
Ответ №1:
После некоторого времени поисков я нашел в документации руководство по интеграции ServiceCollection, которое представляет собой способ интеграции сторонних сервисов в простой инжектор.
Что мне нужно сделать в соответствии с фреймворком перекрестной проводки и сторонними сервисами, так это подключить сервисы blazor к simple injector, поэтому в моем случае мне нужно сделать следующее
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);
}