RoleStore 유형 IRoleStore 서비스에 할당 할 수 없습니다.

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

문제

MVC5와 EF6을 사용하는 프로젝트에서 Autofac으로 종속성 주입을 설정하려고합니다.

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.EntityFramework.IdentityRole]' is not assignable to service 'Microsoft.AspNet.Identity.IRoleStore 1 [[Microsoft.AspNet.Identity.IRole, Microsoft .AspNet.Identity.Core, 버전 = 1.0.0.0, 문화 = 중립, PublicKeyToken = 31bf3856ad364e35]] '.

수락 된 답변

파티에 조금 늦었지만 Autofac으로이 일이 저에게 효과적이었습니다.

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

참조 용 전체 모듈 :

builder.RegisterType<UserStore<ApplicationUser>>().As<IUserStore<ApplicationUser>>();
builder.RegisterType<RoleStore<IdentityRole>>().As<IRoleStore<IdentityRole, string>>();
builder.RegisterType<ApplicationUserManager>();
builder.RegisterType<ApplicationRoleManager>();  

UserManager 및 RoleManager에 래퍼를 사용하고 있습니다.

public class ApplicationUserManager : UserManager<ApplicationUser>
{
    public ApplicationUserManager(IUserStore<ApplicationUser> store)
        : base(store)
    {
    }
}

public class ApplicationRoleManager : RoleManager<IdentityRole>
{
    public ApplicationRoleManager(IRoleStore<IdentityRole, string> roleStore)
        : base(roleStore)
    {            
    }       
}


Related

아래 라이선스: CC-BY-SA with attribution
와 제휴하지 않음 Stack Overflow
이 KB는 합법적입니까? 예, 이유를 알아보십시오.
아래 라이선스: CC-BY-SA with attribution
와 제휴하지 않음 Stack Overflow
이 KB는 합법적입니까? 예, 이유를 알아보십시오.