private object DoBuildUp(Type t, object existing, string name, InjectionMember[] injectionMembers) { var transientPolicies = new PolicyList(this.Context.Policies); foreach (var member in injectionMembers) { member.AddPolicies(null, t, name, transientPolicies); } object result; var buildContext = new BuilderContext(Context.Strategies.MakeStrategyChain(), Context.Lifetime, Context.Policies, transientPolicies, new NamedTypeBuildKey(t, name), existing); try { result = buildContext.Strategies.ExecuteBuildUp(buildContext); } catch (Exception exception) { throw new ResolutionFailedException(t, name, exception, buildContext); } return result; }
public object NewBuildUp(NamedTypeBuildKey newBuildKey, Action<IBuilderContext> childCustomizationBlock) { Guard.ArgumentNotNull(childCustomizationBlock, "childCustomizationBlock"); ChildContext = new BuilderContext(chain, lifetime, persistentPolicies, policies, newBuildKey, null); ChildContext.AddResolverOverrides(Sequence.Collect(resolverOverrides)); childCustomizationBlock(ChildContext); object result = ChildContext.Strategies.ExecuteBuildUp(ChildContext); ChildContext = null; return result; }
/// <summary> /// Run an existing object through the container, and clean it up. /// </summary> /// <param name="o">The object to tear down.</param> public void Teardown(object o) { IBuilderContext context = null; try { Guard.ArgumentNotNull(o, "o"); context = new BuilderContext(GetStrategies().Reverse(), lifetimeContainer, policies, null, o); context.Strategies.ExecuteTearDown(context); } catch (Exception ex) { throw new ResolutionFailedException(o.GetType(), null, ex, context); } }
private object DoBuildUp(Type t, object existing, string name, IEnumerable<ResolverOverride> resolverOverrides) { IBuilderContext context = null; try { context = new BuilderContext( GetStrategies(), lifetimeContainer, policies, new NamedTypeBuildKey(t, name), existing); context.AddResolverOverrides(resolverOverrides); if(t.IsGenericTypeDefinition) { throw new ArgumentException( string.Format(CultureInfo.CurrentCulture, Resources.CannotResolveOpenGenericType, t.FullName), "t"); } return context.Strategies.ExecuteBuildUp(context); } catch (Exception ex) { throw new ResolutionFailedException(t, name, ex, context); } }
public object NewBuildUp(NamedTypeBuildKey newBuildKey) { ChildContext = new BuilderContext(chain, lifetime, persistentPolicies, policies, newBuildKey, null); ChildContext.AddResolverOverrides(Sequence.Collect(resolverOverrides)); object result = ChildContext.Strategies.ExecuteBuildUp(ChildContext); ChildContext = null; return result; }