Я пытаюсь внедрить экземпляр службы в мой NameController
. Служба использует методы из нескольких классов обслуживания, поэтому я делаю это с множественным наследованием интерфейса.
С предоставленным мною кодом, используя _oneThreeService
, я действительно могу получить доступ ко всем методам, которые OneService.cs
и TwoService.cs
содержат. Однако, когда я запускаю приложение, я получаю сообщение об ошибке: InvalidOperationException: Unable to resolve service for type 'ServiceClassLibrary.IOneThreeService' while attempting to activate 'Web.Controllers.NameController'.
В методе ConfigureServices я попытался добавить эту строку services.AddScoped<IOneThreeService, OneService, ThreeService>();
, но это невозможно сделать.
Я хочу иметь возможность использовать методы из этих двух классов обслуживания, внедряя в контроллер только одну службу.
Startup.cs> Метод ConfigureServices:
public void ConfigureServices(IServiceCollection services)
{
services.AddScoped<IOneService, OneService>();
services.AddScoped<ITwoService, TwoService>();
services.AddScoped<IThreeService, ThreeService>();
services.AddControllersWithViews();
}
IOneThreeService. cs:
public interface IOneThreeService : IOneService, IThreeService
{
}
NameController.cs:
public class NameController : Controller
{
private readonly IOneThreeService _oneThreeService;
public NameController(IOneThreeService oneThreeService)
{
_oneThreeService = oneThreeService;
}
[HttpGet]
public IActionResult Index()
{
_oneThreeService.MethodFromOneService();
_oneThreeService.MethodFromTwoService();
return View();
}
}