Me gustaría explícitamente "liberar" una instancia de objeto resuelta por Unity. Esperaba que el método de desmontaje se debe utilizar exactamente por esto por lo que intentó hacer algo como esto:¿Qué debería hacer el método UnityContainer.Teardown?
container.RegisterType(typeof(IMyType), typeof(MyType),
new MyLifetimeManager());
var obj = container.Resolve<IMyType>();
...
container.Teardown(obj);
MyLifetimeManager
tiendas instancia de objeto en HttpContext.Current.Items
. Esperé que el método Teardown
llame al RemoveValue
en el administrador de por vida y libere la instancia MyType y la instancia del administrador de por vida. No funciona En primer lugar, no se llama al RemoveValue
y si vuelvo a llamar al Resolve<IMyType>
obtendré una instancia previamente resuelta.
¿Qué debería hacer el método Teardown
? ¿Cómo puedo liberar un objeto a pesar de su administrador de por vida?
Editar:
Si Teardown
no libera la instancia, que lo haga? ¿Quién llama al RemoveValue
en el administrador de por vida?
mirando el vago "lo limpia" comentario en MSDN, estoy asumiendo TearDown devuelve un objeto prístino, como si estuviera recién creado. – Massif
(Aunque mirando a través de la fuente de Unity, no puedo ver muchas implementaciones de Teardown haciendo nada en absoluto ... Pero no hay tiempo para revisarlas todas) – Massif