Я расследую это для моего коллеги Баса. Я искал в исходном коде Ninject 2 (http://github.com/ninject/ninject.git),, и, кажется, есть некоторое управление жизненным циклом.
Если существует другая область, отличная от переходной, то сборка мусора этой области вызовет деактивацию (через конвейер) всех экземпляров, связанных с этой областью. При деактивации одной из стратегий по умолчанию является DisposableStrategy, эта стратегия удалит экземпляр, если он IDisposable!
Я видел много ответов о stackoveflow, что Ninject не занимается управлением жизненным циклом, может быть, это было так для предыдущей версии Ninject?
Но такое поведение довольно сложно, так как при использовании внедренных сервисов вы не знаете о масштабах. Из-за этого вы не знаете, должны ли вы распоряжаться объектом самостоятельно (временно) или что Ninject позаботится об этом.
Изменения в объеме службы могут привести к ошибкам.