Когда в Ninject деактивируется объект Transient-scope? - PullRequest
7 голосов
/ 12 марта 2010

Когда объект в Ninject связан с InTransientScope(), объект не помещается в кэш, так как он временный и не ограничен ничем.

Когда закончите с объектом, я могу позвонить kernel.Release(obj); это проходит к Cache, где он получает кэшированный элемент и вызывает Pipeline.Deactivate, используя кэшированную запись.

Но поскольку временные объекты не кэшируются, этого не происходит. Я не смог выяснить, где (или кто) выполняет деактивацию для временных объектов. Или предположение, что временные объекты активируются только когда-либо, и что если я хочу деактивируемый объект, мне нужно использовать какую-то другую область видимости?

1 Ответ

8 голосов
/ 12 марта 2010

Ваши предположения верны. Временные объекты не отслеживаются в Ninject и не контролируются в конвейере деактивации. Вы несете ответственность за очистку переходных процессов. Если вы хотите, чтобы ядро ​​управляло вашими экземплярами, вам нужно использовать встроенную область или настраиваемую область.

...