2015-12-17 44 views
0

有一個結果爲空而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); 
     } 
+1

你能告訴我們如何創建'RoleStore'的實例嗎? – Marusyk

+1

這看起來像你的TRole和result1的類型不是可隱式轉換的,而是IdentityRole的不同實現 –

回答

0

我從你的代碼不解的是,從TRole下降IdentityRole。這會使TRole始終成爲IdentityRole,而不是相反。所以result1不是TRole。

GetRoleByName可能會返回TRole。如果你知道這是事實,那麼只需聲明result1爲TRole即可。

但顯然GetRoleByName不返回TRole。如果它執行了你的代碼,那麼應該成功。

+0

感謝這讓我走上了正軌。 – Zennelone

0

您可以使用運營商as鑄造型

TRole result = result1 as TRole; 

MSDN

as運算符就像一個強制操作。但是,如果轉換 不可能,則返回null而不是引發異常。

所以,這意味着投的IdentityRoleTRole是不可能