Почему ApplicationRoleManager не совместим с RoleManager <IdentityRole> - PullRequest
0 голосов
/ 30 апреля 2020

У меня есть приложение MVC5, в котором я пытаюсь внедрить внедрение зависимостей.

У меня нет проблем совместимости ни с UserManager, ни с SignInManager, но RoleManager.

Служба RoleManager ожидает RoleManager<IdentityRole> типа, однако, у меня есть ApplicationRoleManager, но возникает ошибка времени выполнения, сообщающая, что оба типа несовместимы.

ApplicationRoleManager определяется следующим образом:

public class ApplicationRoleManager : RoleManager<ApplicationRole>

И ApplicationRole имеет значение :

public class ApplicationRole : IdentityRole

Как видите, ApplicationRole - это IdentityRole, поэтому ApplicationRoleManager - это RoleManager<IdentityRole>. Я ошибаюсь?

Наконец, услуга добавляется следующим образом:

services.AddTransient(typeof(RoleManager<IdentityRole>), typeof(ApplicationRoleManager));

// Maps the role store role to the implemented type
services.AddTransient<IRoleStore<IdentityRole, string>, RoleStore<IdentityRole>>();
services.AddTransient(typeof(ApplicationRoleManager));

Обратите внимание, что на всех сайтах, которые я изучал о внедрении зависимости, услуга добавляется следующим образом:

services.AddTransient<RoleManager<IdentityRole>, ApplicationRoleManager>();

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

Кстати, я использую Microsoft.Extensions.DependencyInjection.

С уважением

Jaime

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