2017-01-16 75 views
2

比方說,我有一個用戶等級:用戶類繼承IdentityUser;如何處理多重繼承的需要?

public class User : IdentityUser 
{ 
    public int CompanyId { get; set; } 
    //other stuff.... 
} 

現在我代表的人喜歡CustomerEmployeeSecurityGuard其他類...等

我希望它們都繼承Person類:

public class Person 
{ 
    public string FirstName { get; set; } 
    public string LastName { get; set; } 
    public string UID { get; set; } 
    //etc... 
} 

組成將在這一點上是天賜良機,但由於EF核心尚不支持複雜類型,我卡住了。有沒有辦法解決這個問題?

+1

你爲什麼不要麼把屬性爲'User'或使'Person'從'User'繼承? – DavidG

+0

因爲其他類需要從Person繼承,並且它們不是應用程序中的用戶(Customer,Employee等)。 將屬性放入用戶將意味着將代碼複製到每個其他類中......這是我現在唯一的選擇。 – Jakov

+1

提取'Person'的屬性來連接'IPerson'。讓'用戶'也實現'IPerson'。是的,它是代碼的重複,但由於'User'已經有一個基類,它是最好的C#允許的,同時允許你將'User'傳遞給具有類人屬性的方法。 –

回答

-1

並非每個UserPerson。通常,應用程序有一些「後臺」用戶/進程(自動更正服務,計劃任務等),它們仍然執行應該註冊/記錄的操作。

所以,你可以在User類創建Person屬性:

public class User : IdentityUser 
{ 
    public int CompanyId { get; set; }   
    public virtual Person Person { get; set; } 
    //other stuff.... 
}