gpt4 book ai didi

dependency-injection - RoleStore 类型不可分配给服务 IRoleStore

转载 作者:行者123 更新时间:2023-12-04 08:21:43 25 4
gpt4 key购买 nike

我正在尝试使用 Autofac 为使用 MVC5 和 EF6 的项目设置依赖注入(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>>()));

完整的错误信息:

The type 'Microsoft.AspNet.Identity.EntityFramework.RoleStore1[Microsoft.AspNet.Identity.EntityFramework.IdentityRole]' is not assignable to service 'Microsoft.AspNet.Identity.IRoleStore1[[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<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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com