4

ブロックエンティティがあるCADアプリケーションに取り組んでいます。各ブロック エンティティには、子エンティティのリストがあります。これらのエンティティがレンダリングされると、すべてのブロック エンティティはその子エンティティを認識し (リスト内の子エンティティを把握できるため)、ブロック エンティティが選択されると、ブロック エンティティ全体とその子エンティティが選択されます。ただし、子エンティティは親ブロックとそのブロックの他の子エンティティを認識していないため、子エンティティを選択すると、ブロック エンティティ全体とそのすべての子エンティティを選択できません。

この問題の修正として、親ブロック エンティティの参照を保持するプロパティを子エンティティに作成しました。ただし、相互参照に問題があり、データ構造にエラーが発生しやすくなる可能性があります。

例: コピー コマンドを使用すると、数日後にこれらのデータ構造に取り組んでいる誰かが、子エンティティのコピーを作成するときに同じ親をコピーするだけかもしれません。ただし、新しいコピーは他の親ブロックに属している必要があります。

この関係を実装するより良い方法を提案してください。これにより、子エンティティが選択されたときに、ブロック エンティティ全体とそのすべての子エンティティを選択できるようになります。

public class BlockEntity
{
    public List<ChildEntity> Children = new List<ChildEntity>();
}

public class ChildEntity
{
    public readonly BlockEntity Parent;
}
4

2 に答える 2