0

我正在嘗試構建一組可重用的EF模型和接口。一個這樣的接口被稱爲ICategorised,看起來如下:EF接口 - 通過相關類型獲取對象

public interface ICategorised { 
    int CategoryID { get; set; } 
    Category Category { get; set; } 
} 

而這裏的類別對象的樣子:

public class Category { 
    public int CategoryID { get; set; } 
    public string Title { get; set; } 
    public Type Type { get; set; } // Is 'Type' the wrong type for this? 
    public string Description { get; set; } 
} 

我很喜歡這個原則,但我對如何略有難倒最好獲取並設置實現ICategorised的任何對象的類型。我的最終目標是創建一個對象的能力,例如:

public class Car : ICategorised { 
    public int CarID { get; set; } 
    public string CarName { get; set; } 
    public int CategoryID { get; set; } 
    public Category Category { get; set; } 
} 

..並以某種方式能夠查詢Categories哪裏Type==Car

+0

您預計會發生多少種類型? –

+0

最初只是一對夫婦。我的計劃是製作這個,我寫的商業邏輯,視圖等,儘可能容易地重用。 – Phil

回答

1

我認爲你應該重新考慮當前使用ICategorized作爲存在類型。在我看來,實際上這應該是Category,因爲Category提供了對ICategorized中所有內容的定義,但目前並未實際實現。如果你想保持ICategorized我會讓Category作爲第一點實施它。

其次,我會讓Category abstract,因爲它不應該直接實例化。然後,您創建的Car和您創建的任何其他分類類將直接從abstract Category派生。如果您如上所述更改層次結構,這也使得它們本身也具有ICategorized

這樣做可以實現我認爲的目標,並且導致更清晰的層次結構,以便將來的類型可擴展。然後您可以直接在Type上查詢,因爲每個特定的Category子類將具有明確的Type集合,例如Car

希望能夠幫助,或者至少是朝着正確方向邁出的一步。

+0

這是一個更好的方法。我放棄了ICategorised,而是創建了一個抽象的Category類,併爲每個類型分類了派生類。 – Phil