2015-10-22 30 views
1

問題描述IdentityUserClaim實例化和類型轉換錯誤

我最近升級從Beta 6我的ASP.NET應用5至8公測我遇到的幾個問題,但是這一個平坦的東西殘留着我。我遇到了以下錯誤:

Using the generic type IdentityUserClaim<TKey>' requires 1 type argument SampleProject.DNX 4.5.1

代碼

IdentityUserClaim<string> IdentityUserClaimString = await applicationDbContext.UserClaims.SingleAsync(c => c.Id == claimId); 

      IdentityUserClaim identityUserClaim = new IdentityUserClaim(); 
      identityUserClaim.Id = IdentityUserClaimString.Id; 
      identityUserClaim.ClaimType = IdentityUserClaimString.ClaimType; 
      identityUserClaim.ClaimValue = IdentityUserClaimString.ClaimValue; 
      identityUserClaim.UserId = IdentityUserClaimString.UserId; 
      return (identityUserClaim); 

嘗試

我試圖使一個通用類,但通常我儘量不重寫基地包或甚至延長給我們。

據我瞭解錯誤,它希望我將IdentitUserClaim更改爲例如IdentityUserClaim<int>。但是,這並不是我對這個庫的理解,也不是在ASP.NET5中使用它直到beta6。我一直在使用它。

所以我的問題是,有沒有什麼辦法可以解決這個問題,而不必徹底重寫我的代碼,或者我將不得不重寫我的自定義標識聲明,因爲有一些代碼規則的變化或強制我沒有意識到在beta6 +包Microsoft.AspNet.Identity.EntityFramework

請把我的話說,我有一個用於製作自定義聲明的用例。感謝您的時間,耐心和考慮。

回答

1

過去有一個非通用IdentityUserClaim類使用string類型PARAM爲TKey

public class IdentityUserClaim : IdentityUserClaim<string> { } 

這個類(和其他幾個人),然而,在聯蛋白β7were removed。如果您願意,可以再次將該類添加到您自己的代碼庫中,或者只使用IdentityUserClaim<string>

+0

如果我的理解正確,我可以調用IdentityUserClaim ,它將等同於我的原始案例。如果是的話,我已經瞭解了更多關於代碼庫的知識,並將重構以將依賴關係和自定義代碼降到最低。對? – hlyates

+0

這是正確的@ hlyates。 'new IdentityUserClaim ()'會導致相同的結果。 –

+0

謝謝主席您的指出和非常翔實的答案。 – hlyates