У меня есть приложение 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