/// <summary> /// Composes the specified composition context. /// </summary> /// <param name="compositionContext">The composition context.</param> private void compose(CompositionContext compositionContext) { var composition = CompositionProvider.Compose(compositionContext); CompositionResult.Set(composition); CompositionContext.Set(compositionContext); if (!composition.Failed) { Context.DynamicCall("$dynamic_composition", composition.Generator, compositionContext.InputInstances); Composed.Set(true); } }
/// <summary> /// Processes the composition. /// </summary> /// <param name="notConstructed">The not constructed instances.</param> /// <param name="constructed">The constructed instances.</param> /// <param name="toRemove">Instances to be removed from composition.</param> private void processComposition(IEnumerable <Instance> notConstructed, IEnumerable <Instance> constructed, IEnumerable <Instance> toRemove) { if (notConstructed == null) { notConstructed = new Instance[0]; } if (constructed == null) { constructed = new Instance[0]; } if (toRemove == null) { toRemove = new Instance[0]; } var composition = new CompositionContext(CallingAssemblyServices, Context); notConstructed = notConstructed.Except(toRemove); constructed = constructed.Except(toRemove); //add components that needs importing constructor call composition.AddNotConstructedComponents(notConstructed); //add instances that doesn't need constructor call composition.AddConstructedComponents(constructed); //create composition var compositionResult = CompositionProvider.Compose(composition); CompositionResult.Set(compositionResult); if (!compositionResult.Failed) { //if composition building is OK then process composition Context.DynamicCall("$dynamic_composition", composition.Generator, composition.InputInstances); } }