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);
        }

Null时应该有一个值,如何解决这个问题

我从您的代码中了解到,TRole源自IdentityRole。这将使TRole在任何时候都是一个身份角色,但不是相反。所以result1不是一个TRole。

但是,GetRoleByName可能会返回一个TRole。如果您知道是这样的话,只需将result1声明为TRole即可。

但显然GetRoleByName不会返回TRole。如果它成功了,你的代码应该已经成功了。

您使用运算符as来铸造类型

TRole result = result1 as TRole;

来自MSDN:

as运算符类似于强制转换操作。但是,如果转换不可能,因为返回null而不是引发异常。

因此,这意味着将IdentityRole转换为TRole是不可能的