Как внедрить сервисы в контроллер внутри библиотеки классов Razor - PullRequest
0 голосов
/ 21 октября 2018

Я использую библиотеку классов Razor для создания многоразового сложного представления (которое включает в себя его контроллер и несколько компонентов представления), которое можно использовать в нескольких проектах ASP.NET Core MVC.Проблема в том, что контроллер использует внедрение зависимостей (пользовательский сервис под названием «GatewayProxy» и локализация строк).Как правильно внедрить сервисы в контроллер внутри RCL?

Вот структура моего RCL:

enter image description here

Вот исключение:

enter image description here

1 Ответ

0 голосов
/ 23 октября 2018

Вы упомянули, как вы это исправили, добавив зависимости в Startup.cs вашего основного проекта.Но учтите, что любой потребитель этой повторно используемой библиотеки может не помнить (или не знать), какие зависимости необходимы для вашей библиотеки.

Что-то, что вы можете сделать, чтобы решить эту проблему, это создать расширение из IServiceCollection в вашем Rclэто делает регистрацию зависимостей.

public static void AddMyRclServices(this IServiceCollection serviceCollection, IConfiguration config)
{
    serviceCollection.AddTransient<IRclService1, RclService1>();
    serviceCollection.AddScoped<IRclService2, RclService2>();
}

Затем в Startup.cs для вашего проекта MVC вызовите расширение

using Rcl.Extensions

public void ConfigureServices(IServiceCollection services)
{
    services.AddMyRclServices(config);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...