2010-03-12 6 views
7

Wenn ein Objekt in Ninject mit InTransientScope() gebunden ist, wird das Objekt nicht in den Cache gestellt, da es transient und nicht auf irgendwas beschränkt ist.Wann ist ein Transient-Scope-Objekt in Ninject deaktiviert?

Wenn Sie mit dem Objekt fertig sind, kann ich kernel.Release(obj) aufrufen; Dies wird an den Cache übergeben, wo es den zwischengespeicherten Artikel abruft und Pipeline.Deactivate unter Verwendung des zwischengespeicherten Eintrags aufruft.

Da jedoch transiente Objekte nicht zwischengespeichert werden, passiert dies nicht. Ich konnte nicht herausfinden, wo (oder wer) die Deaktivierung für transiente Objekte durchführt. Oder ist die Annahme, dass transiente Objekte immer nur aktiviert werden, und dass, wenn ich ein deaktivierbares Objekt möchte, ich einen anderen Bereich verwenden muss?

Antwort

8

Ihre Annahmen sind korrekt. Transiente Objekte werden in Ninject nicht verfolgt und nicht in der Deaktivierungspipeline gesteuert. Es liegt in Ihrer Verantwortung, vorübergehende Instanzen zu bereinigen. Wenn der Kernel Ihre Instanzen verwalten soll, müssen Sie einen integrierten Bereich oder einen benutzerdefinierten Bereich verwenden.

+0

Danke. Das "Interessante" ist, dass sie gut aktiviert sind, also gibt es eine Diskrepanz in meinem Kopf (etwas, das aktiviert ist, sollte deaktiviert werden). – nwahmaet

Verwandte Themen