セルのリストがあり、各リストにはステーションのリストがあります。
ステーションの親セルを取得する必要がある場合があります。
この階層をどのように実装しますか?
- 親セルをステーションオブジェクトのプロパティとして保持する必要がありますか?
- ステーションオブジェクトには親セルIDのみを保持する必要がありますか?
- 何か違うことはありますか?
私があなたなら、2つのクラスを作成します。
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
オブジェクトを使用して、階層内の異なるステーションを表すことができます。
このソリューションは、多様性のために提供されています。ほとんどの場合、上で提案したように、進むべき道は作曲です。また、IdではなくCell自体を使用する必要があると思います。