C#对象层次结构

时间:2012-05-31 12:50:45

标签: c# object

我有一个单元格列表,每个列表都有一个站点列表。

有时我需要获取一个电台的父细胞。

我如何实现此层次结构?

  • 我应该将父级单元格保留为工作站对象中的属性吗?
  • 我应该只在站点对象中保留父单元格ID吗?
  • 做些不同的事情?

3 个答案:

答案 0 :(得分:5)

如果我是你,我会创建两个类:

public class Cell {
 ...
  public List<Station> Stations {
    get {...}
  }

  protected Station AddStation() {
     Station result = new Station(this);
     Stations.Add(result);
     return result;
  }
}

public class Station {
  public Station(Cell cell) {
    this.cell = cell;
  }
  Cell cell;
  public Cell Cell {get {return cell;}}
}

使用此结构,您始终可以从Station对象访问Cell。

答案 1 :(得分:2)

如果您需要从Station导航回Cell,则需要Station对象拥有ParentCell(或Cell)属性设置为其父级单元格。

答案 2 :(得分:1)

如果您想要一个不同的答案,有一种方法可以在没有实际构成的情况下实现层次结构。创建一个工作站对象,其中每个方法都接受Cell作为参数,例如:

public void DoStuff(whatever x, Cell parent)
{

}

将在其父单元格的上下文中评估每个工作站,但您可以使用相同的Station对象来表示层次结构中的不同工作站。

提供该解决方案是为了多样化。在大多数情况下,如上所述,要走的是构图。另外,我认为你应该使用Cell本身,而不是ID。