private void BuildUp(BuildObject build, ErrorTracer errorTracer, BuildParameter[] buildParameters) { lock (build.Export) { var context = new DefaultBuildContext(build, container, errorTracer, buildParameters); build.Instance = context.Target; Pipeline.Build(context); } }
/// <summary> /// The add build. /// </summary> /// <param name="instance"> /// The instance. /// </param> public void AddBuild(BuildObject instance) { Contract.Requires<ArgumentNullException>(instance != null, "instance"); lock (this) { _objects[instance.Metadata].Add(instance); } }
/// <summary> /// The build up. /// </summary> /// <param name="export"> /// The export. /// </param> /// <param name="contractName"> /// The contract name. /// </param> /// <param name="tracer"></param> /// <param name="buildParameters"></param> /// <returns> /// The <see cref="object" />. /// </returns> public object BuildUp(IExport export, string contractName, ErrorTracer tracer, BuildParameter[] buildParameters) { Contract.Requires<ArgumentNullException>(export != null, "export"); lock (export) { try { tracer.Phase = "Begin Building Up"; var context = new DefaultBuildContext(export, BuildMode.Resolve, container, contractName, tracer, buildParameters, _componentRegistry.GetAll<IResolverExtension>().ToArray()); var buildObject = new BuildObject(export.ImportMetadata, context.Metadata, buildParameters); Pipeline.Build(context); if (tracer.Exceptional) return null; buildObject.Instance = context.Target; if (!export.ExternalInfo.External && !export.ExternalInfo.HandlesLiftime) RebuildManager.AddBuild(buildObject); Contract.Assume(context.Target != null); return context.Target; } catch (Exception e) { tracer.Exceptional = true; tracer.Exception = e; return null; } } }