Ich habe eine Situation, in der meine Eltern wissen, dass es ein Kind ist (duh), aber ich möchte, dass das Kind auf die Eltern verweisen kann. Der Grund dafür ist, dass ich möchte, dass das Kind die Fähigkeit hat, sich selbst als am wichtigsten oder am wenigsten wichtig zu bezeichnen, wenn es sich danach anfühlt. Wenn das Kind dies tut, verschiebt es es an den oberen oder unteren Rand der Kinder des Elternteils.
In der Vergangenheit habe ich eine WeakReference-Eigenschaft für das Kind verwendet, um es an die Eltern weiterzuleiten, aber ich bin der Meinung, dass dies einen ärgerlichen Aufwand mit sich bringt, aber vielleicht ist es nur der beste Weg, dies zu tun.
Ist das nur eine schlechte Idee? Wie würden Sie diese Fähigkeit anders einsetzen?
Update 1: Hinzufügen von mehr Kontext. Dies ist ein Rendering-System, sodass der übergeordnete Container eine Liste von Fenstern ist, die zu Gruppen zusammengefasst sind. Das untergeordnete Element (Fenster) mit der Aufschrift "Ich bin am wichtigsten!" will im Grunde auf dem Rest der Fenster gerendert werden.
Das übergeordnete Element ist nur ein logischer Container zum Gruppieren dieser untergeordneten Elemente. Ich kann sehen, wo es eine gute Idee ist, ein Ereignis hinzuzufügen, um die Anfrage zu signalisieren, ganz oben zu stehen. Aber abgesehen von der Implementierung (was das Kind mit dem Elternteil tun möchte), warum möchten Sie nicht, dass das Kind mit dem Elternteil verknüpft wird? Dies geschieht durch doppelt verknüpfte Listen, damit Personen von und zu etwas gelangen können.
quelle
WeakReference
. Der .net-Garbage-Collector kann Zyklen verarbeiten. Wenn das Kind nicht mehr verwendet wird (der Elternteil zeigt nicht darauf), wird es trotz eines Verweises auf den Elternteil gesammelt.Antworten:
Oft.
Wie machst du es besser? Das Kind sollte nicht wissen oder sich darum kümmern, dass es sich in einer Sammlung befindet. Anstatt sich selbst für wichtig zu halten, sollte es signalisieren, dass ein Ereignis stattgefunden hat, von dem es weiß, dass es passiert ist, damit jeder (der Elternteil) seine Priorität erhöhen kann (oder was auch immer die Regeln für den Kontext sind, in dem das Kind lebt). Ich bin davon nicht begeistert und würde es vielleicht vorziehen, die Bedenken zwischen dem Modell des Kindes und dem Wichtigkeitsverhalten besser zu trennen, kann aber nicht ohne weiteren Kontext näher darauf eingehen.
[bearbeiten:]
Ja, Rendering-Systeme sind ein Fall, in dem das Eigentum der Eltern einen Sinn ergibt, aber es ist ein Fall, in dem dies getan wurde und nicht das Ende der Welt ist. Um einen Steuerungsfokus zu erhalten, würde ich immer noch das Design bevorzugen, bei dem der Eingabehandler (oder was auch immer) den Baum abwickelt und weiß, welche Sammlung neu angeordnet werden soll, anstatt das Kind zu finden, und etwas darauf aufzurufen, das weiß, dass es an sein Elternteil geht.
quelle
Wie kam die Hinrichtung zu dem Punkt, an dem das Kind entscheidet, dass es am wichtigsten sein möchte? Ist es dort durch die Eltern angekommen? Wenn ja, können Sie einen Verweis auf das übergeordnete Element an diese Methode senden.
z.B. Wenn alle Knoten eine Art update () -Methode haben, die so etwas wie macht
Sie könnten es ändern
quelle
Ich denke nicht, dass es eine schlechte Idee ist. Sie können dieses Problem lösen, indem Sie jedem untergeordneten Element einen Sortierreihenfolgewert hinzufügen. Ich stelle mir so etwas wie einen "Z-Index" vor, mit dem Objekte auf Webseiten übereinander oder hintereinander angezeigt werden.
Ich bin nicht sicher, wie Sie so etwas codieren würden, aber das Konzept klingt machbar.
quelle