internal CResultAErreur Execute(CObjetDonneeAIdNumerique cible) { CContexteEvaluationExpression ctx = new CContexteEvaluationExpression(MacroObjet.Macro); CResultAErreur result = FormuleValeur.Eval(ctx); if (result) { try { if (!m_champ.IsReadOnly) { CInterpreteurProprieteDynamique.SetValue(cible, m_champ, result.Data); } else//Peut ĂȘtre un champ forçable pour les macros { CDefinitionProprieteDynamiqueDotNet defDotNet = m_champ as CDefinitionProprieteDynamiqueDotNet; if (defDotNet != null) { PropertyInfo info = info = cible.GetType().GetProperty(defDotNet.NomProprieteSansCleTypeChamp); if (info != null) { object[] attrs = info.GetCustomAttributes(typeof(TiagRelationAttribute), true); if (attrs != null && attrs.Length > 0) { TiagRelationAttribute att = (TiagRelationAttribute)attrs[0]; MethodInfo meth = cible.GetType().GetMethod(att.NomMethodeSetClesParentes); if (meth != null) { object[] lstCles = null; CObjetDonnee obj = result.Data as CObjetDonnee; if (obj == null) { lstCles = new object[1]; } else { lstCles = obj.GetValeursCles(); } meth.Invoke(cible, new object[] { lstCles }); } } } } } } catch (Exception e) { result.EmpileErreur(new CErreurException(e)); result.EmpileErreur("#Error while affecting property " + m_champ.Nom); } } return(result); }
//-------------------------------------------------- public ITestDataHotel GetTestFinal(object objetPourSousProprietes) { CResultAErreur result = CResultAErreur.True; CContexteEvaluationExpression ctx = new CContexteEvaluationExpression(objetPourSousProprietes); if (FormuleApplication != null) { result = FormuleApplication.Eval(ctx); if (!result || result.Data == null) { return(null); } if (!CUtilBool.BoolFromObject(result.Data)) { return(null); } } double?valRef = null; if (FormuleValeur != null) { result = FormuleValeur.Eval(ctx); if (!result) { return(null); } if (result.Data is double) { valRef = (double)result.Data; } else { try { valRef = Convert.ToDouble(result.Data); } catch { } } } if (valRef == null) { return(null); } CTestDataHotelValue test = new CTestDataHotelValue(); test.IdChamp = m_strHotelColonneId; test.Operateur = Operateur; test.ValeurReference = valRef.Value; return(test); }