2010-03-12 13 views
7

Cuando un objeto en Ninject está vinculado con InTransientScope(), el objeto no se coloca en la memoria caché, ya que es, por ejemplo, transitorio y no tiene alcance.¿Cuándo se desactiva un objeto de alcance transitorio en Ninject?

Cuando termine con el objeto, puedo llamar al kernel.Release(obj); esto pasa a la memoria caché donde recupera el elemento en caché y llama al Pipeline.Deactivate usando la entrada en caché.

Pero como los objetos transitorios no están en la memoria caché, esto no sucede. No he podido averiguar dónde (o quién) realiza la desactivación de objetos transitorios. ¿O es la suposición de que los objetos transitorios solo se activan alguna vez, y que si quiero un objeto desactivable, necesito usar algún otro ámbito?

Respuesta

8

Tus suposiciones son correctas. Los objetos transitorios no se rastrean en Ninject y no se controlan en la tubería de desactivación. Es su responsabilidad limpiar las instancias transitorias. Si desea que el kernel administre sus instancias, entonces necesita usar un alcance incorporado o un alcance personalizado.

+0

Gracias. Lo 'interesante' es que se activan muy bien, por lo que hay una falta de coincidencia en mi cabeza (algo que está Activado debe ser Desactivado). – nwahmaet

Cuestiones relacionadas