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)); }