Когда объект в Ninject связывается с InTransientScope()
, объект не помещается в кэш, так как это, er, переходный процесс и не ограничено по объему к чему-либо.
При выполнении с объектом я могу звонить kernel.Release(obj)
; это передает до Кэша, где он получает кэшируемый элемент и вызовы Pipeline.Deactivate
использование кэшируемой записи.
Но так как временные объекты не кэшируются, этого не происходит. Я не смог выяснить, где (или кто) выполняет деактивацию для временных объектов. Или предположение то, что временные объекты только когда-либо активируются, и что, если я хочу deactivateable объект, я должен использовать некоторый другой объем?
Ваши предположения верны. Временные объекты не отслеживаются в Ninject и не контролируются в конвейере деактивации. Вы несете ответственность за очистку временных экземпляров. Если вы хотите, чтобы ядро управляло вашими экземплярами, вам нужно использовать встроенную или настраиваемую область видимости.