/// ///////////////////////////////////////////////////////// protected object GetValeurChamp(object source, CDefinitionProprieteDynamique propriete) { CDefinitionProprieteDynamiqueVariableFormule defFormule = propriete as CDefinitionProprieteDynamiqueVariableFormule; if (defFormule != null) { return(GetValeurVariable(defFormule)); } if (source != null && m_bUseOptimiseurs) { Type tp = source.GetType(); string strKey = tp.ToString() + "/" + propriete.NomPropriete; IOptimiseurGetValueDynamic optimiseur = null; bool bDejaCherche = false; if (m_dicOptimiseurs.TryGetValue(strKey, out optimiseur)) { bDejaCherche = true; } if (!bDejaCherche) { optimiseur = CInterpreteurProprieteDynamique.GetOptimiseur(tp, propriete.NomPropriete); m_dicOptimiseurs[strKey] = optimiseur; } if (optimiseur != null) { return(optimiseur.GetValue(source)); } } CResultAErreur result = CInterpreteurProprieteDynamique.GetValue(source, propriete, m_cache); if (result) { return(result.Data); } if (m_oldInterpreteur != null) { return(m_oldInterpreteur.GetValue(source, propriete)); } return(null); }
public static new void Autoexec() { CInterpreteurProprieteDynamique.RegisterTypeDefinition(c_strCleType, typeof(CInterpreteurProprieteDynamiqueDataColumn)); }
//---------------------------------------------------------------- public static void Autoexec() { CInterpreteurProprieteDynamique.RegisterTypeDefinition(CDefinitionProprieteDynamiqueSourceSupplementaire.c_strCleType, typeof(CInterpreteurProprieteDynamiqueSourceSupplementaire)); }
//----------------------------------------------- public static void Autoexec() { CInterpreteurProprieteDynamique.RegisterTypeDefinition(c_strCleType, typeof(CInterpreteurProprieteDynamiqueDotNet)); }
/// ////////////////////////////////////////// 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); }