ich würde gerne alle Referenzen auf ein Objekt löschen, also zuerst ein mal
alle Referenzen holen und diese dann löschen. Das könnte dann irgend wie so
aussehen:
public bool deleteAllReferences(object obj)
{
alleReferenzen = holeAlleReferenzen(obj);
foreach(referenz in alleReferenzen)
{
löscheReferenz(referenz);
}
retrun true;
}
Der GarbageCollector muesste dieses Wissen haben, aber wie komme ich daran?
Vielen Dank und Viele Gruesse
Stefan
Warum? Lösche doch dort jeweils die Referenz, wo du sie nicht mehr brauchst.
Dann wird das Objekt automatisch nur noch dort referenziert, wo es gebraucht
wird. Und wenn es gebraucht wird, müssen und dürfen auch keine Referenzen
gelöscht werden.
Die Referenzen können ja überall stecken, in lokalen Variablen oder in Feldern.
Sie einfach auf Nothing (Null) zu setzen wäre fatal.
--
Armin
danke erst mal fuer die schnelle Antwort.
Warum ich das ganze brauche:
Ich arbeite mit NHibernate und will dort ein Objekt löschen...dazu muss ich
alle (?) Referenzen auf dieses Objekt löschen.
Zumindest will ich (zu Untersuchungszwecken) mal schauen, welche Referenzen
ein Objekt denn noch besitzt.
Mein Problem ist ja genau (wie von dir beschrieben), dass die Referenzen ja
ueberall stecken koennen und ich nicht sicher sein kann, dass ich alle
kenne...
Gibt es nict irgend eine Möglichkeit alle Referenzen auf ein Objekt zu
bekommen?
Wie macht das der GarbageCollector?
Gibt er (der GarbageCollector) sein Wissen preis?
Viele Gruesse,
Stefan
"Armin Zingler" wrote:
> .
>
Kann ich dir leider nicht sagen. Habe auch nicht danach gesucht.
--
Armin
> Ich arbeite mit NHibernate und will dort ein Objekt löschen...dazu
> muss ich alle (?) Referenzen auf dieses Objekt löschen.
Ich kenne mich absolut nicht mit ORM Tools aus, aber das klingt genau
wie eines der Probleme, das man mit traditionellen SQL DBs gar nicht
erst hätte :-P
> Zumindest will ich (zu Untersuchungszwecken) mal schauen, welche
> Referenzen ein Objekt denn noch besitzt.
Das geht mit Debuggern/Profilern, ist allerdings meistens nicht
besonders einfach.
--
Immo Landwerth
> Ich arbeite mit NHibernate und will dort ein Objekt löschen...dazu muss ich
> alle (?) Referenzen auf dieses Objekt löschen.
> Zumindest will ich (zu Untersuchungszwecken) mal schauen, welche Referenzen
> ein Objekt denn noch besitzt.
>
> Mein Problem ist ja genau (wie von dir beschrieben), dass die Referenzen ja
> ueberall stecken koennen und ich nicht sicher sein kann, dass ich alle
> kenne...
Mal eine ketzerische Frage: warum kennst du nicht alle Referenzen, die
ein Objekt, welches du loeschen willst, hat? Sobald du ein Objekt von
NH hilst, hast du eine Referenz und weisst auch, wo du sie hast.
Wenn du auf Objekte ansprichst, die als Kind-Objekte automatisch durch
NH mit erzeugt/geladen werden, kannst du sie auch niht einfach so
loeschen, wenn du nicht vorher die Referenz von Eltern-Objekt geloest
hast.
Selbst mit LazyLoading sollte das kein Thema sein. Oder hast du irgend
eine Sonderlogik in Gebrauch?
Cheers,
Udo