簡體   English   中英

如何創建一個屬性是另一個類的集合?

[英]How do create a class property that is a collection of another class?

我有Client,Project和Task的課程。

每個客戶包含多個項目。 每個項目包含多個任務。

在數據庫中,每個數據庫都有一個ID字段,而項目表有一個clientid字段。 此外,“任務”表具有一個projectid字段。

有人可以幫助我解決這種情況,以便讓我每個人都上一堂課嗎?

這里是:

public class Client
{
    public int Id {get;set;}
    // Client Properties

    private List<Project> _projects = new List<Project>();
    public List<Project> Projects { get { return _projects; } }
}

public class Project
{
    public int Id { get; set; }
    public int ClientId { get; set; }

    // Project Properties

    private List<Task> _tasks = new List<Task>();
    public List<Task> Tasks { get { return _tasks; } }
}

public class Task
{
    public int Id { get; set; }
    public int ProjectId { get; set; }

    // Task Properties
}

您需要創建一個集合類型的屬性,例如List<Project>

但是 - 有一個決定:任何外部類是否具有直接從Projects集合屬性添加或刪除項目的完全訪問權限,或者外部類只能讀取集合?

如果任何其他類可以完全訪問“項目”列表,則需要選擇列表將顯示為的外部類型。 作為IList<Project>ICollection<Project>公開可能是個好主意,具體取決於您希望其他類能夠執行的操作。

如果其他類不能自由訪問列表,您可能希望將其公開為IEnumerable<Project>以便他們所能做的就是遍歷列表。 此外,如果沒有其他類具有直接訪問權限,那么您將不得不向Client類添加方法以允許添加和/或刪除項目。

通過僅允許基於接口的外部訪問項目列表,您可以自由地將基礎數據結構更改為另一個兼容的數據結構,而不會破壞任何其他代碼。 例如,如果屬性是IEnumerable<Project> ,則可以將內部代碼從List<Project>更改為數組( Project[] ),而不需要知道其他代碼。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM