空的同时应该有一个值,如何解决这个问题?

时间:2015-12-17 10:18:12

标签: c# asp.net-mvc identity

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

2 个答案:

答案 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。如果它完成了你的代码,那就怪了,应该已经成功了。