Тип RoleStore <IdentityRole> не назначается сервису IRoleStore <IRole>

asp.net-mvc-5 autofac dependency-injection entity-framework-6

Вопрос

Я пытаюсь настроить инъекцию зависимостей с помощью Autofac для проекта с использованием MVC5 и EF6.

Мне сложно определить, как правильно отделить реализацию EntityFramework.RoleStore <EntityFramework.IdentityRole>.
Я хотел бы иметь зависимость только от Identity.IRoleStore <Identity.IRole>, но я знаю, что для общих классов мне нужно указать конкретную реализацию, а не интерфейс.

Вот что я пробовал:

        builder.RegisterType<IdentityRole>().As<IRole>();
        builder.RegisterType<RoleManager<IRole>>();
        builder.RegisterType<RoleStore<IdentityRole>>().As<IRoleStore<IRole>>();
        builder.Register(c => new RoleManager<IRole>(c.Resolve<IRoleStore<IRole>>()));

Полное сообщение об ошибке:

Тип «Microsoft.AspNet.Identity.EntityFramework.RoleStore 1[Microsoft.AspNet.Identity.EntityFramework.IdentityRole]' is not assignable to service 'Microsoft.AspNet.Identity.IRoleStore 1 [[Microsoft.AspNet.Identity.IRole, Microsoft .AspNet.Identity.Core, Version = 1.0.0.0, Culture = neutral, PublicKeyToken = 31bf3856ad364e35]] '.

Принятый ответ

Бит поздно на вечеринку, но это сработало для меня с Autofac:

builder.RegisterType<RoleStore<IdentityRole>>().As<IRoleStore<IdentityRole, string>>();

Мой полный модуль для справки:

builder.RegisterType<RoleStore<IdentityRole>>().As<IRoleStore<IdentityRole, string>>();

Я использую оболочки для UserManager и RoleManager

builder.RegisterType<RoleStore<IdentityRole>>().As<IRoleStore<IdentityRole, string>>();



Лицензировано согласно: CC-BY-SA with attribution
Не связан с Stack Overflow
Является ли этот КБ законным? Да, узнайте, почему
Лицензировано согласно: CC-BY-SA with attribution
Не связан с Stack Overflow
Является ли этот КБ законным? Да, узнайте, почему