Exemplo n.º 1
0
        public override void PreBuildUp(IBuilderContext context)
        {
            Guard.ArgumentNotNull(context, "context");

            DynamicBuildPlanGenerationContext buildContext =
                (DynamicBuildPlanGenerationContext)context.Existing;

            GuardTypeIsNonPrimitive(context);

            buildContext.AddToBuildPlan(
                Expression.IfThen(
                    Expression.Equal(
                        buildContext.GetExistingObjectExpression(),
                        Expression.Constant(null)),
                    this.CreateInstanceBuildupExpression(buildContext, context)));

            buildContext.AddToBuildPlan(
                Expression.Call(null, SetPerBuildSingletonMethod, buildContext.ContextParameter));
        }