ASP.NET Core userManager и контекст в отдельном контроллере - PullRequest
0 голосов
/ 01 ноября 2018

Я хотел бы создать отдельный контроллер только для userManager и dbcontext. Я хочу наследовать от этого контроллера. Я не хочу вводить зависимости, используя конструктор, потому что таким образом мне придется добавлять конструктор также в другие контроллеры. Есть ли другой способ сделать это?

private UserManager<ApplicationUser> _userManager;
private ApplicationDbContext _context;

ApplicationDbContext Context
{
    get
    {
        if(this._context == null)
        {
            // GET CONTEXT <= HOW TO DO THIS?
        }
        return this._context;
    }
}

UserManager<ApplicationUser> UserManager
{
    get
    {
        if(this._userManager == null)
        {
            // GET USER MANAGER <= HOW TO DO THIS?
        }
        return this._userManager;
    }
}

1 Ответ

0 голосов
/ 01 ноября 2018

Если вы полностью против использования Dependency Injection, вы можете использовать шаблон Service Locator, но я бы советовал не использовать его по причинам, указанным в Service Locator - это Anti-Pattern .

Если вы все еще не хотите использовать Dependency Injection, вы можете использовать HttpContext.RequestServices для доступа к экземпляру IServiceProvider и использовать его GetRequiredService метод для запроса типов, которые вы после, как это:

ApplicationDbContext Context
{
    get
    {
        if (this._context == null)
        {
            this._context = HttpContext.RequestServices.GetRequiredService<ApplicationDbContext>();
        }

        return this._context;
    }
}

UserManager<ApplicationUser> UserManager
{
    get
    {
        if (this._userManager == null)
        {
            this._userManager = HttpContext.RequestServices.GetRequiredService<UserManager<ApplicationUser>>();
        }

        return this._userManager;
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...