Ninject和ASP.NET Identity 2.0

use*_*689 8 c# entity-framework ninject asp.net-identity

我刚刚将ASP.NET Identity Entity Framework软件包从1.0升级到2.0,其中一个Ninject绑定现已破坏:

kernel.Bind<IUserStore<User>>().To<UserStore<User>>();
kernel.Bind<UserManager<User>>().ToSelf();
kernel.Bind<IRoleStore<IdentityRole>>().To<RoleStore<IdentityRole>>();
kernel.Bind<RoleManager<IdentityRole>>().ToSelf();
Run Code Online (Sandbox Code Playgroud)

第二个最后一个是在编译时给出这个错误:

类型'Microsoft.AspNet.Identity.EntityFramework.RoleStore'不能在泛型类型或方法'Ninject.Syntax.IBindingToSyntax.To()'中用作类型参数'TImplementation'.

没有从"Microsoft.AspNet.Identity.EntityFramework.RoleStore"到"Microsoft.AspNet.Identity.IRoleStore"的隐式引用转换.

这些是所涉及的类的一些声明:

public interface IRoleStore<TRole> : IRoleStore<TRole, string>, IDisposable where TRole : IRole<string>

public class RoleStore<TRole, TKey, TUserRole> : IQueryableRoleStore<TRole, TKey>, IRoleStore<TRole, TKey>, IDisposable where TRole : IdentityRole<TKey, TUserRole>, new() where TUserRole : IdentityUserRole<TKey>, new()
Run Code Online (Sandbox Code Playgroud)

我不确定是什么导致它破裂?

Hao*_*ung 10

我们添加了一个新的基本RoleStore类,并将用户角色实体类型添加为泛型类型,因此也许可以尝试

kernel.Bind<IRoleStore<IdentityRole, string>>().To<RoleStore<IdentityRole, string, IdentityUserRole>>();
Run Code Online (Sandbox Code Playgroud)