예제 #1
0
        //------------------------------------------------------------------
        public CDefinitionProprieteDynamique[] GetDefinitionsChamps(Type typeInterroge, int nNbNiveaux, CDefinitionProprieteDynamique defParente)
        {
            List <CDefinitionProprieteDynamique> lst   = new List <CDefinitionProprieteDynamique>();
            CObjetPourSousProprietes             objet = new CObjetPourSousProprietes(typeInterroge);

            foreach (IFournisseurProprieteDynamiquesSimplifie fournisseur in m_listeSousFournisseurs)
            {
                lst.AddRange(fournisseur.GetDefinitionsChamps(objet, defParente));
            }
            foreach (CObjetPourSousProprietes objetSecondaire in m_associationsObjetsSupplementaires.GetObjetsAssocies(objet))
            {
                foreach (IFournisseurProprieteDynamiquesSimplifie fournisseur in m_listeSousFournisseurs)
                {
                    lst.AddRange(fournisseur.GetDefinitionsChamps(objetSecondaire, defParente));
                }
            }
            NettoieListe(lst);
            lst.Sort((x, y) => x.Nom.CompareTo(y.Nom));
            return(lst.ToArray());
        }
예제 #2
0
        //-----------------------------------------------
        public CDefinitionProprieteDynamique[] GetDefinitionsChamps(CObjetPourSousProprietes objet, CDefinitionProprieteDynamique defParente)
        {
            List <CDefinitionProprieteDynamique> lst = new List <CDefinitionProprieteDynamique>();

            if (m_fournisseurPrincipal != null)
            {
                lst.AddRange(m_fournisseurPrincipal.GetDefinitionsChamps(objet, defParente));
            }
            if (defParente == null)
            {
                foreach (CDefinitionProprieteDynamiqueVariableFormule var in m_listeVariables)
                {
                    var.Rubrique = I.T("Variables|20085");
                    lst.Add(var);
                }
            }
            return(lst.ToArray());
        }
예제 #3
0
        //------------------------------------------------------------------
        public CDefinitionProprieteDynamique[] GetDefinitionsChamps(CObjetPourSousProprietes objet, CDefinitionProprieteDynamique defParente)
        {
            List <CDefinitionProprieteDynamique> lst = new List <CDefinitionProprieteDynamique>();

            CDefinitionMultiSourceForExpression multi = objet.ElementAVariableInstance as CDefinitionMultiSourceForExpression;

            if (multi != null)
            {
                lst.AddRange(GetDefinitionsChamps(multi.DefinitionObjetPrincipal));
            }
            foreach (IFournisseurProprieteDynamiquesSimplifie fournisseur in m_listeSousFournisseurs)
            {
                lst.AddRange(fournisseur.GetDefinitionsChamps(objet, defParente));
            }
            foreach (CObjetPourSousProprietes objetSecondaire in m_associationsObjetsSupplementaires.GetObjetsAssocies(objet))
            {
                foreach (IFournisseurProprieteDynamiquesSimplifie fournisseur in m_listeSousFournisseurs)
                {
                    lst.AddRange(fournisseur.GetDefinitionsChamps(objetSecondaire, defParente));
                }
            }
            NettoieListe(lst);
            lst.Sort();
            return(lst.ToArray());
        }
예제 #4
0
        public CDefinitionProprieteDynamique[] GetDefinitionsChamps(CObjetPourSousProprietes objet, CDefinitionProprieteDynamique defParente)
        {
            List <CDefinitionProprieteDynamique> lstProps = new List <CDefinitionProprieteDynamique>();

            if (objet == null)
            {
                return(lstProps.ToArray());
            }
            Type tp = objet.TypeAnalyse;

            if (tp == null)
            {
                return(lstProps.ToArray());
            }

            //Va chercher les propriétés
            foreach (MethodInfo methode in tp.GetMethods())
            {
                object[] attribs = methode.GetCustomAttributes(typeof(DynamicMethodAttribute), true);
                if (attribs.Length == 1)
                {
                    DynamicMethodAttribute  attrib     = (DynamicMethodAttribute)attribs[0];
                    CTypeResultatExpression typeRes    = CTypeResultatExpression.FromTypeDotNet(methode.ReturnType);
                    ParameterInfo[]         parametres = methode.GetParameters();
                    StringBuilder           bl         = new StringBuilder();
                    bl.Append(methode.Name);
                    bl.Append("(");
                    foreach (ParameterInfo info in parametres)
                    {
                        bl.Append(info.Name);
                        bl.Append("; ");
                    }
                    if (parametres.Length > 0)
                    {
                        bl.Remove(bl.Length - 2, 2);
                    }
                    bl.Append(")");
                    CDefinitionProprieteDynamique def = new CDefinitionMethodeDynamique(
                        bl.ToString(),
                        methode.Name,
                        typeRes,
                        CFournisseurGeneriqueProprietesDynamiques.HasSubProperties(typeRes.TypeDotNetNatif),
                        attrib.Descriptif,
                        attrib.InfosParametres);
                    def.Rubrique = I.T("Methods|58");
                    lstProps.Add(def);
                }
            }
            foreach (CMethodeSupplementaire methode in CGestionnaireMethodesSupplementaires.GetMethodsForType(tp))
            {
                CDefinitionProprieteDynamique def = new CDefinitionMethodeDynamique(
                    methode.Name,
                    methode.Name,
                    new CTypeResultatExpression(methode.ReturnType, methode.ReturnArrayOfReturnType),
                    CFournisseurGeneriqueProprietesDynamiques.HasSubProperties(methode.ReturnType));
                def.Rubrique = I.T("Methods|58");
                lstProps.Add(def);
            }
            return(lstProps.ToArray());
        }
예제 #5
0
        //-----------------------------------------------
        public CDefinitionProprieteDynamique[] GetDefinitionsChamps(Type typeInterroge, int nNbNiveaux, CDefinitionProprieteDynamique defParente)
        {
            List <CDefinitionProprieteDynamique> lst = new List <CDefinitionProprieteDynamique>();

            if (m_fournisseurPrincipal != null)
            {
                lst.AddRange(m_fournisseurPrincipal.GetDefinitionsChamps(typeInterroge, nNbNiveaux, defParente));
            }
            foreach (CDefinitionProprieteDynamiqueVariableFormule var in m_listeVariables)
            {
                var.Rubrique = I.T("Variables|20085");
                lst.Add(var);
            }

            return(lst.ToArray());
        }
        //----------------------------------------------------------------------------------------
        public CDefinitionProprieteDynamique[] GetDefinitionsChamps(Type typeInterroge, int nNbNiveaux, CDefinitionProprieteDynamique defParente)
        {
            if (m_table == null)
            {
                return(new CDefinitionProprieteDynamique[0]);
            }
            List <CDefinitionProprieteDynamique> lst = new List <CDefinitionProprieteDynamique>();

            foreach (DataColumn col in m_table.Columns)
            {
                lst.Add(new CDefinitionProprieteDynamiqueDataColumn(col));
            }
            return(lst.ToArray());
        }
 //----------------------------------------------------------------------------------------
 public CDefinitionProprieteDynamique[] GetDefinitionsChamps(CObjetPourSousProprietes objet, CDefinitionProprieteDynamique defParente)
 {
     if (objet != null)
     {
         return(GetDefinitionsChamps(objet.TypeAnalyse, 0, defParente));
     }
     return(new CDefinitionProprieteDynamique[0]);
 }
예제 #8
0
 //----------------------------------------------------------
 public static CResultAErreur GetValue(object objet, CDefinitionProprieteDynamique defProp)
 {
     return(GetValue(objet, defProp, null));
 }
예제 #9
0
        //----------------------------------------------------------
        /// <summary>
        /// Le data du result contient la valeur de la propriété pour l'objet
        /// </summary>
        /// <param name="objet"></param>
        /// <param name="strPropriete"></param>
        /// <returns></returns>
        public static CResultAErreur GetValue(object objet, string strProprieteComplete, CCacheValeursProprietes cache)
        {
            CResultAErreur          result       = CResultAErreur.True;
            IApplatisseurProprietes applatisseur = objet as IApplatisseurProprietes;

            if (applatisseur != null)
            {
                objet = applatisseur.GetObjetPourPropriete(strProprieteComplete);
            }
            if (cache != null && objet != null)
            {
                object valeur = cache.GetValeurCache(objet, strProprieteComplete);
                if (valeur != null)
                {
                    result.Data = valeur;
                    return(result);
                }
            }
            string[] strProprietes     = strProprieteComplete.Split('.');
            string   strPropriete      = strProprietes[0];
            string   strSuitePropriete = "";

            if (strProprieteComplete.Length > strPropriete.Length)
            {
                strSuitePropriete = strProprieteComplete.Substring(strPropriete.Length + 1);
            }
            string strCleType          = "";
            string strProprieteSansCle = "";

            if (CDefinitionProprieteDynamique.DecomposeNomProprieteUnique(strPropriete, ref strCleType, ref strProprieteSansCle))
            {
                object objetSource = null;
                if (cache != null)
                {
                    objetSource = cache.GetValeurCache(objet, strPropriete);
                }
                if (objetSource == null)
                {
                    strPropriete = strProprieteSansCle;
                    Type tpInterpreteur = null;
                    if (m_tableCleTypeToTypeInterpreteur.TryGetValue(strCleType.ToUpper(), out tpInterpreteur))
                    {
                        IInterpreteurProprieteDynamique interpreteur = Activator.CreateInstance(tpInterpreteur) as IInterpreteurProprieteDynamique;
                        if (interpreteur != null)
                        {
                            result = interpreteur.GetValue(objet, strPropriete);
                            if (!result)
                            {
                                return(result);
                            }
                            objetSource = result.Data;
                            if (result && cache != null)
                            {
                                cache.StockeValeurEnCache(objet, strProprietes[0], objetSource);
                            }
                        }
                    }
                    else
                    {
                        result.EmpileErreur(I.T("Can not find parser for @1|20001", strPropriete));
                        return(result);
                    }
                }
                if (objetSource != null && strSuitePropriete.Length > 0)
                {
                    result = GetValue(objetSource, strSuitePropriete);
                    if (result && cache != null)
                    {
                        cache.StockeValeurEnCache(objet, strProprieteComplete, result.Data);
                    }
                }
                return(result);
            }
            if (m_oldInterpreteur != null)
            {
                result.Data = m_oldInterpreteur.GetValue(objet, strProprieteComplete);
                return(result);
            }
            result.EmpileErreur(I.T("Bad property format (@1)|20000", strPropriete));
            return(result);
        }
        public static CDefinitionProprieteDynamique GetProprieteInverse(Type typePortantLaPropriete, CDefinitionProprieteDynamique def)
        {
            CDefinitionProprieteDynamique defInverse = null;
            List <Type> lstFournisseurs = null;

            if (m_dicTypeDefToFournisseursInverses.TryGetValue(def.GetType(), out lstFournisseurs))
            {
                foreach (Type tp in lstFournisseurs)
                {
                    IFournisseurProprieteDynamiqueInverse f = Activator.CreateInstance(tp) as IFournisseurProprieteDynamiqueInverse;
                    if (f != null)
                    {
                        defInverse = f.GetProprieteInverse(typePortantLaPropriete, def);
                        if (defInverse != null)
                        {
                            return(defInverse);
                        }
                    }
                }
            }
            return(null);
        }
 /// /////////////////////////////////////////////////////////////////////
 public CArbreDefinitionsDynamiques(CDefinitionProprieteDynamique def)
 {
     m_definition = def;
 }
        public CDefinitionProprieteDynamique[] GetDefinitionsChamps(CObjetPourSousProprietes objet, CDefinitionProprieteDynamique defParente)
        {
            try
            {
                if (objet.ElementAVariableInstance != null)
                {
                    return(objet.ElementAVariableInstance.GetProprietesInstance());
                }
            }
            catch { }

            return(new CDefinitionProprieteDynamique[0]);
        }