我正在尝试使用MVC5和EF6为项目设置Autofac依赖注入(inject)。

我很难弄清楚如何正确解耦EntityFramework.RoleStore 实现。
我只想依赖Identity.IRoleStore ,但我知道对于泛型类,我需要指定具体的实现,而不是接口(interface)。

这是我尝试的:

        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>>()));

完整的错误消息:

最佳答案

参加聚会有点晚,但这在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)
    {
    }
}

关于dependency-injection - 无法将类型RoleStore <IdentityRole>分配给服务IRoleStore <IRole>,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20188327/

10-13 06:46