Я хотел бы явно "освободить" экземпляр объекта, разрешенный Unity.Я надеялся, что метод Teardown должен использоваться именно для этого, поэтому я попробовал что-то вроде этого:
container.RegisterType(typeof(IMyType), typeof(MyType),
new MyLifetimeManager());
var obj = container.Resolve<IMyType>();
...
container.Teardown(obj);
MyLifetimeManager
сохраняет экземпляр объекта в HttpContext.Current.Items
.Я ожидал, что метод Teardown
вызовет RemoveValue
для менеджера времени жизни и освободит как экземпляр MyType, так и экземпляр менеджера времени жизни.Не работаетПрежде всего, RemoveValue
не вызывается, и если я снова позвоню Resolve<IMyType>
, я получу ранее разрешенный экземпляр.
Что должен делать метод Teardown
?Как я могу освободить объект, несмотря на его менеджер времени жизни?
Редактировать:
Если Teardown
не освобождает экземпляр, кто это делает?Кто звонит RemoveValue
на пожизненный менеджер?