//---------------------------------------------------------- public static CResultAErreur GetValue(object objet, CDefinitionProprieteDynamique defProp, CCacheValeursProprietes cache) { if (defProp != null) { CDefinitionMultiSourceForExpression source = objet as CDefinitionMultiSourceForExpression; if (source != null && !(defProp is CDefinitionProprieteDynamiqueSourceSupplementaire)) { return(GetValue(source.ObjetPrincipal, defProp)); } string strNomProp = defProp.NomPropriete; if (strNomProp.Length > 0 && strNomProp[0] != CDefinitionProprieteDynamique.c_strCaractereStartCleType && m_oldInterpreteur != null) { CResultAErreur result = CResultAErreur.True; result.Data = m_oldInterpreteur.GetValue(objet, defProp); return(result); } return(GetValue(objet, strNomProp, cache)); } return(CResultAErreur.True); }
/// ///////////////////////////////////////////////////////// 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); }