ASP Core - Контроллер силовых параметров - PullRequest
0 голосов
/ 17 мая 2018

Я строю библиотеку, которая должна быть более общей. Так что у меня контроллер действительно простой

public class AdminController : Controller
{
    object _repo;
    public AdminController(object repo)
    {
        _repo = repo;
    }

    ...
}

Теперь я хотел бы сказать ASP в моем веб-приложении, чтобы использовать этот контроллер с классом Repository без необходимости наследования хранилища от интерфейса.

Что-то вроде, хорошо, если вам нужно создать экземпляр объекта AdminController, просто передайте репозиторий так же, как и для других контроллеров, которым требуется параметр репозитория.

Я уже пытаюсь сделать это в файле Startup.cs, но он ничего не делает

services.AddScoped<AdminController>(c => {
    Console.WriteLine("We need you");
    return new AdminController(c.GetService<IRepository>());
});

1 Ответ

0 голосов
/ 17 мая 2018

Может быть, вам могут помочь дженерики?

public class AdminController<T> : Controller
{
    private readonly T _repo;

    public AdminController(T repo)
    {
        _repo = repo;
    }

    ...
}

services.AddScoped<AdminController<IRepository>>(c => {
    Console.WriteLine("We need you");
    return new AdminController<IRepository>(c.GetService<IRepository>());
});
...