null 而应该有一个值,如何解决这个问题?
Null while there should be a value, how to solve this?
遇到 result 为空而 result1 具有良好值的问题。
IdentityRole result1 = roleTable.GetRoleByName(roleName);
TRole result = result1 as TRole;
我的class是这样定义的:
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);
}
您使用运算符 as
来转换类型
TRole result = result1 as TRole;
来自MSDN:
The as
operator is like a cast operation. However, if the conversion
isn't possible, as returns null
instead of raising an exception.
所以,这意味着将 IdentityRole
转换为 TRole
是不可能的
我从您的代码中了解到,TRole 源自 IdentityRole。这将使 TRole 始终成为 IdentityRole,但反之则不然。所以 result1 不是 TRole。
GetRoleByName 但是 return 可能是一个 TRole。如果您知道是这种情况,只需将 result1 声明为 TRole。
但显然 GetRoleByName 并不是 return TRole。如果它执行了您的代码,尽管很奇怪,应该已经成功了。
遇到 result 为空而 result1 具有良好值的问题。
IdentityRole result1 = roleTable.GetRoleByName(roleName);
TRole result = result1 as TRole;
我的class是这样定义的:
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);
}
您使用运算符 as
来转换类型
TRole result = result1 as TRole;
来自MSDN:
The
as
operator is like a cast operation. However, if the conversion isn't possible, as returnsnull
instead of raising an exception.
所以,这意味着将 IdentityRole
转换为 TRole
是不可能的
我从您的代码中了解到,TRole 源自 IdentityRole。这将使 TRole 始终成为 IdentityRole,但反之则不然。所以 result1 不是 TRole。
GetRoleByName 但是 return 可能是一个 TRole。如果您知道是这种情况,只需将 result1 声明为 TRole。
但显然 GetRoleByName 并不是 return TRole。如果它执行了您的代码,尽管很奇怪,应该已经成功了。