我有一个单元列表,每个列表都有一个站点列表。
有时我需要获取一个站的父单元。
我将如何实现这个层次结构?
- 我应该将父单元格保留为站对象中的属性吗?
- 我应该只在站对象中保留父单元 ID 吗?
- 做点不一样的?
如果我是你,我会创建两个类:
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。
如果您需要从 导航回Station
,则Cell
需要该Station
对象具有设置为其父单元格的ParentCell
(或)属性。Cell
如果您想要不同的答案,有一种方法可以在没有实际组合的情况下实现层次结构。创建一个站对象,其中每个方法都接受 Cell 作为参数,例如:
public void DoStuff(whatever x, Cell parent)
{
}
每个站将在其父单元的上下文中进行评估,但您可以使用相同的Station
对象来表示层次结构中的不同站。
提供该解决方案是为了多样化。在大多数情况下,要走的路是组合,如上所述。另外,我认为你应该使用 Cell 本身,而不是它的 Id。