[英]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.