Laden...

Unity Container Object Lifetime - Wann wird Objekt verworfen?

Letzter Beitrag vor 8 Jahren 4 Posts 1.028 Views
Unity Container Object Lifetime - Wann wird Objekt verworfen?

Hallo zusammen,

Ich arbeite zur Zeit zum ersten Mal mit Unity als DI-Container und habe eine Frage bzgl. der Lebensspanne von Objekten, die durch den Container erzeugt wurden. Der erzeugte Typ wurde mit einem Standard TransientLifetimeManager registriert. Ist es nun so, dass der Unity Container selbst eine Referenz auf das erzeugte Objekt hält oder wird es ganz normal vom GC abgeräumt, sobald es nicht mehr "benötigt" wird?

Gruß,
wax

Understanding Lifetime Managers

TransientLifetimeManager. For this lifetime manager Unity creates and returns a new instance of the requested type for each call to the Resolve or ResolveAll method. This lifetime manager is used by default for all types registered using the RegisterType, method unless you specify a different lifetime manager.

Das hatte ich auch gelesen. Ich interpretiere das als "fire and forget", also er kennt die Objekte nach der Instanziierung nicht mehr.

Gruß,
wax

Korrekt. Er erstellt nur die Instanz und gibt sie zurück.
Andere Manager wie HierarchicalLifetimeManager ticken da anders und werden auch in anderen Umgebungen verwendet.

zB in ASP.NET bindet man den Container i.d.R. an den HttpContext.
Bei jedem Request wird somit ein neuer Container erstellt, sodass jeder Request wirklich eine isolierte Umgebung hat.
Ist der Request verarbeitet, dann wird der Container und damit auch seine gehaltenen Instanzen verworfen.