/// ////////////////////////////////////////// public override CResultAErreur MyEval(CContexteEvaluationExpression ctx, object[] valeursParametres) { CResultAErreur result = CResultAErreur.True; try { C2iExpressionChamp champ = (C2iExpressionChamp)Parametres[0]; if (champ.DefinitionPropriete == null || champ.DefinitionPropriete.IsReadOnly) { result.EmpileErreur(I.T("Impossible to affect a value to @1|133", champ.DefinitionPropriete == null?"null":champ.DefinitionPropriete.Nom)); return(result); } ctx.SetValeurVariable(champ.DefinitionPropriete, valeursParametres[1]); result.Data = valeursParametres[1]; } catch { result.EmpileErreur(I.T("Error during the variable creation|132")); } return(result); }
/// ////////////////////////////////////////// protected override CResultAErreur ProtectedEval(CContexteEvaluationExpression ctx) { CResultAErreur result = CResultAErreur.True; try { C2iExpressionChamp champFinal = null; object objSource = ctx.ObjetSource; result = GetSourceEtChampFinal(Parametres2i[0], ctx, ref objSource, ref champFinal); if (!result) { return(result); } if (champFinal == null) { result.EmpileErreur(I.T("Impossible to affect a value to @1|133", Parametres2i[0].ToString())); return(result); } result = Parametres2i[1].Eval(ctx); if (!result) { return(result); } object valeur = result.Data; CDefinitionProprieteDynamiqueVariableFormule propFormule = champFinal.DefinitionPropriete as CDefinitionProprieteDynamiqueVariableFormule; if (propFormule != null) { ctx.SetValeurVariable(propFormule, valeur); } else { if (objSource == null) { return(result); } SynchronizationContext c = ctx.SynchronizationContext; if (c != null) { c.Post(x => CInterpreteurProprieteDynamique.SetValue(objSource, champFinal.DefinitionPropriete.NomPropriete, valeur), null); } else { result = CInterpreteurProprieteDynamique.SetValue(objSource, champFinal.DefinitionPropriete.NomPropriete, valeur); } } if (result) { result.Data = valeur; if (objSource != null) { ctx.Cache.ResetCache(objSource); } } } catch (Exception e) { result.EmpileErreur(new CErreurException(e)); } return(result); }