如果result1具有良好的值,则会出现结果为null的问题。
IdentityRole result1 = roleTable.GetRoleByName(roleName);
TRole result = result1 as TRole;
我的课程定义如下:
public class RoleStore<TRole> : IQueryableRoleStore<TRole>
where TRole : IdentityRole
整个功能:
public Task<TRole> FindByNameAsync(string roleName)
{
IdentityRole result1 = roleTable.GetRoleByName(roleName);
TRole result = result1 as TRole;
return Task.FromResult<TRole>(result);
}
答案 0 :(得分:0)
您使用运算符as
来投射类型
TRole result = result1 as TRole;
来自MSDN:
as
运算符就像一个强制转换操作。但是,如果转换 不可能,因为返回null
而不是引发异常。
因此,这意味着无法将IdentityRole
强制转换为TRole
答案 1 :(得分:0)
我从您的代码中了解到,TRole来自IdentityRole。这将使TRole始终成为IdentityRole,而不是相反。所以result1不是TRole。
然而,GetRoleByName可以返回一个TRole。如果您知道这种情况,请将result1声明为TRole。
但显然GetRoleByName不会返回TRole。如果它完成了你的代码,那就怪了,应该已经成功了。