Exemple #1
0
        /*----------------------------------------------------------------------------------------*/
        /// <summary>
        /// Destroys an instance by executing the chain of destruction strategies.
        /// </summary>
        /// <param name="context">The context in which the instance was requested.</param>
        public void Destroy(IContext context)
        {
            Ensure.ArgumentNotNull(context, "context");
            Ensure.NotDisposed(this);

            if (context.Instance == null)
            {
                throw new InvalidOperationException(ExceptionFormatter.ContextDoesNotContainInstanceToRelease(context));
            }

            Strategies.ExecuteForChain(s => s.BeforeDestroy(context));
            Strategies.ExecuteForChain(s => s.Destroy(context));
            Strategies.ExecuteForChain(s => s.AfterDestroy(context));
        }