Null时应该有一个值,如何解决这个问题
本文关键字:解决 问题 何解决 有一个 Null | 更新日期: 2023-09-27 18:27:06
有一个问题,结果为null,而result1的值很好。
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);
}
我从您的代码中了解到,TRole源自IdentityRole。这将使TRole在任何时候都是一个身份角色,但不是相反。所以result1不是一个TRole。
但是,GetRoleByName可能会返回一个TRole。如果您知道是这样的话,只需将result1声明为TRole即可。
但显然GetRoleByName不会返回TRole。如果它成功了,你的代码应该已经成功了。
您使用运算符as
来铸造类型
TRole result = result1 as TRole;
来自MSDN:
as
运算符类似于强制转换操作。但是,如果转换不可能,因为返回null
而不是引发异常。
因此,这意味着将IdentityRole
转换为TRole
是不可能的