Mugen Injection [Жизненые циклы компонентов]
Когда MugenInjector получает запрос для какого-то компонента, он может вернуть один экземпляр для всех запросов(SingletonScopeLifecycle), или каждый раз новый (TransientScopeLifecycle) или один экземпляр в зависимости от какого-то контекста, thread, HTTP запрос и т.д.
Список всех доступных жизненных циклов:
- TransientScopeLifecycle - в случаи активации через рефлексию создается новый экземпляр, не должны быть повторно использованы.
- SingletonScopeLifecycle - будет создан только один экземпляр компонента, а затем должен будет повторно использоваться для всех последующих запросов.
- ThreadScopeLifecycle - для каждого потока используется только один экземпляр, но для каждого потока создается свой.
- UnitOfWorkScopeLifecycle - внутри одного контейнера используется только один экземпляр, но в дочерних контейнерах будет создан свой экземпляр.
- WeakReferenceScopeLifecycle - создается новый компонент и помещается в WeakReference, до тех пор пока WeakReference будет содержать компонент, он не будет пересоздан.
- ManagedScopeLifecycle - для управление жизненым циклом используется IManagedScope.
- CustomScopeLifecycle - используется пользовательский жизненный цикл.
- WebContextScopeLifecycle - для управление жизненным циклом используется HttpContext, или HttpSessionState, или OperationContext.
Вы можете задать тип жизненного цикла, который будет использоваться всеми Binding при создании, если он не задан явно:
// Create your MugenInjector. _injector = new MugenInjector(); _injector.Settings.DefaultScopeLifecycleFactory = () => new UnitOfWorkScopeLifecycle();