/// <summary>
        ///     The on perpare.
        /// </summary>
        /// <param name="context">
        ///     The context.
        /// </param>
        public override void OnPerpare(IBuildContext context)
        {
            if (context.Target != null) return;

            context.ErrorTracer.Phase = "Reciving Construtor Informations for " + context.Metadata;

            IImportInterceptor interceptor;

            context.Policys.Add(
                new ConstructorPolicy
                {
                    Constructor =
                        context.UseInternalInstantiation()
                            ? Helper.WriteDefaultCreation(context)
                            : context.Metadata.Export.ExternalInfo.Create,
                    Generator =
                        _service.Generate(context.Metadata, context.Metadata.Export.ImportMetadata.ToArray(),
                                          out interceptor)
                });

            if (interceptor == null) return;

            var pol = context.Policys.Get<ExternalImportInterceptorPolicy>();

            if (pol != null) pol.Interceptors.Add(interceptor);
            else
            {
                pol = new ExternalImportInterceptorPolicy();
                pol.Interceptors.Add(interceptor);

                context.Policys.Add(pol);
            }
        }