2012-02-16 5 views
0

Есть ли механизм в инжекторе зависимости в OpenRasta, который срывает экземпляр объекта, который был создан? Независимо от времени жизни зависимостей.OpenRasta Dependency Injection срыв

Я пробовал посмотреть источник, но не смог найти прямой разрыв. Не похоже, что реализация IDisposable делает трюк.

Обновление Я в основном искал однотонный сингл, поэтому я не буду открывать билет по проекту openrasta-core. На данный момент я отслеживаю экземпляр синглтона в своей собственной библиотеке (в настоящее время не знаю, как напрямую обращаться к синглонам в OpenRasta), чтобы получить доступ к закрытию приложения.

ответ

2

Disposing - это целая сумка боли для реализации права. Объекты на основе запроса имеют известное время жизни объекта (контейнеры, которые реализуют интерфейс OR DI, имеют крючок, чтобы знать, когда удалять эту область), статика (начиная с версии 2.1.1) будет удалена контейнером при завершении работы хоста (что означает почти никогда не для asp.net, и всякий раз, когда вы закрываете сам хостинг-сервер/в mem-хостинге), и переходные процессы мы не имеем понятия, как это сделать: как вы знаете, когда что-то нужно удалять, если вы не отслеживаете из этого, что, если вы это делаете, означает, что он не освобождается, все это очень проблематично.

Таким образом, внутренний контейнер DI не уничтожает ничего, хотя мы можем добавить удаление одиночных пакетов на контейнере и по запросу при завершении запроса, я полагаю, это было бы очень полезно. Не стесняйтесь добавлять билет на github в проекте openrasta-core.

В качестве альтернативы, используйте существующий контейнер IoC вместо существующего. Некоторые люди также добавили персонализированных вкладчиков для самостоятельной очистки без использования внешнего контейнера.

Seb

+0

это кристально чистый ответ, спасибо. Утилизация синглотонов звучит хорошо, но я буду искать элегантное обходное решение перед добавлением билета. Есть ли способ прямого доступа к синглонам? –