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); }