実際の例は非常に単純です。家があり、家には壁などがあります。
class Room {
public List<Wall> Walls{get; set;}
}
class Wall {
public List<WallObject> WallObjects{get; set;}
}
現在、開発者は数年前にクラスの壁にプロパティルームを追加しました。
class Wall {
public List<WallObject> WallObjects{get; set;}
public Room Room{ get; set; }
}
このオブジェクトをクラスに入れるのはとても楽しいことです。多くの場所で親要素にアクセスできます(430)。しかし、設定や変更をしないため、そこに属さず、エラーが発生することもあると思います。
多くの場合、メソッドのハンドオーバーを除いて、他のアプローチはありますか?
これを簡単に修正する方法は多くありませんが、通常、使用するリストのタイプを変更し、適切なイベントを使用して親を登録および登録解除することを選択します。
public class Room
{
public ObservableCollection<Wall> Walls { get; } = new ObservableCollection<Wall>();
public Room()
{
Walls.CollectionChanged += Walls_CollectionChanged;
}
private void Walls_CollectionChanged(object sender, NotifyCollectionChangedEventArgs e)
{
switch (e.Action)
{
case NotifyCollectionChangedAction.Add:
{
foreach (Wall w in e.NewItems)
{
w.Room = this;
}
break;
}
case NotifyCollectionChangedAction.Remove:
{
foreach (Wall w in e.OldItems)
{
w.Room = null;
}
break;
}
}
}
}
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加