我有一個對象可以具有相同對象類型的父項和子項。有沒有實現這種模式的標準方式?對象模式的嵌套層次結構
喜歡的東西:
public class Nested
{
public string Name {get; set;}
public List<Nested> Parents {get {TODO}}
public List<Nested> Children {get {TODO}}
}
我有一個對象可以具有相同對象類型的父項和子項。有沒有實現這種模式的標準方式?對象模式的嵌套層次結構
喜歡的東西:
public class Nested
{
public string Name {get; set;}
public List<Nested> Parents {get {TODO}}
public List<Nested> Children {get {TODO}}
}
採取對組合模式here
從存儲的角度看,這似乎是你的類的任何實例都需要通過一切遞歸過濾弄清楚什麼關係是。這很麻煩。
我會建議只是給你的類像這樣的屬性(或更復雜的東西,這取決於你在尋找什麼來完成):
public Nested parent;
這將使它成爲一個鏈表。你可以在類的外面單獨創建一個方法,該方法根據一組有限的參數設法找到父項(例如FindParentsOfNestedToCertainGeneration(int numOfGenerations,Nested child)) - 這將會轉到子項目上,並沿着「父母「財產)。
Carl Benson,我認爲要求是單個節點可以有多個父母。例如,員工可以有多個主管的組織。 – 2011-06-14 05:07:34
檢查此鏈接是否有助於http://forums.silverlight.net/forums/p/231184/566463.aspx。數據庫有關類似問題的討論http://www.dbforums.com/microsoft-sql-server/1642466-multiple-parents-tree-digraph-implementation.html和http://forums.asp.net/t/1259184。 aspx/1 – 2011-06-14 05:17:53