internal static object Activate(this IScopeContextInternal context, Scope scope)
        {
            if (context.IsNull() || context.IsNull)
            {
                return(null);
            }

            var instance = ContainerFactory.Current.Resolve(context.BoundType, GetActivationScope(context, scope));

            if (!instance.IsNull())
            {
                return(instance);
            }
            instance = ActivateAndInitialize(context, null);
            ContainerFactory.Current.Bind(instance.GetType(), instance, GetActivationScope(context, scope));
            return(instance);
        }
        internal static T Activate <T>(this IScopeContextInternal context, Action <T> initializeMethod, Scope?scope = null)
        {
            if (context.IsNull() || context.IsNull)
            {
                return(default(T));
            }
            if (context.BoundType.IsGenericTypeDefinition)
            {
                context = CreateConcreteType <T>(context);
            }
            var instance = (T)ContainerFactory.Current.Resolve(context.BoundType, GetActivationScope(context, scope));

            if (!instance.IsNull())
            {
                return(instance);
            }
            instance = ActivateAndInitialize(context, initializeMethod);
            ContainerFactory.Current.Bind(instance.GetType(), instance, GetActivationScope(context, scope));
            return(instance);
        }