コード例 #1
0
        //-------------------------------------------------
        public virtual CDefinitionProprieteDynamique[] GetDefinitionsChamps(Type tp, int nNbNiveaux, CDefinitionProprieteDynamique defParente)
        {
            /*ITraducteurNomChamps traducteur =  null;
             * if ( defParente is ITraducteurNomChamps )
             *      traducteur = (ITraducteurNomChamps)defParente;*/
            CDefinitionProprieteDynamique[] defs = new CDefinitionProprieteDynamique[0];
            CFournisseurPropDynStd          four = new CFournisseurPropDynStd(true);

            if (!tp.IsSubclassOf(GetType()) && tp != GetType())
            {
                defs = four.GetDefinitionsChamps(tp, nNbNiveaux, defParente);
                if (defParente != null)
                {
                    return(defs);
                }
            }
            List <CDefinitionProprieteDynamique> lst = new List <CDefinitionProprieteDynamique>();

            foreach (CDefinitionProprieteDynamique def in defs)
            {
                lst.Add(def);
            }
            lst.AddRange(GetProprietesInstance());
            return(lst.ToArray( ));
        }
コード例 #2
0
        /// /////////////////////////////////////////////
        /// Implémentation du IFournisseurProprietesDynamiques
        public CDefinitionProprieteDynamique[] GetDefinitionsChamps(Type tp, int nNbNiveaux, CDefinitionProprieteDynamique defParente)
        {
            /*ITraducteurNomChamps traducteur =  null;
             * if ( defParente is ITraducteurNomChamps )
             *      traducteur = (ITraducteurNomChamps)defParente;*/
            CFournisseurPropDynStd four = new CFournisseurPropDynStd(true);
            ArrayList lst = new ArrayList();

            lst.AddRange(four.GetDefinitionsChamps(tp, nNbNiveaux, defParente));
            lst.AddRange(GetProprietesInstance());
            return((CDefinitionProprieteDynamique[])lst.ToArray(typeof(CDefinitionProprieteDynamique)));
        }
コード例 #3
0
        /// ///////////////////////////////////////////////////////////
        public object GetValue(object objetInterroge, string strPropriete)
        {
            CFournisseurPropDynStd fournisseur = new CFournisseurPropDynStd(false);

            if (objetInterroge == null)
            {
                return(null);
            }
            //Est-ce une propriété simple ?(majorité des cas )
            object     objetAInterroger = null;
            MemberInfo membre           = null;

            if (CInterpreteurTextePropriete.GetObjetFinalEtMemberInfo(objetInterroge, strPropriete, ref objetAInterroger, ref membre) && membre != null)
            {
                return(CInterpreteurTextePropriete.GetValue(objetAInterroger, membre));
            }

            //Bon pas de bol, c'est autre chose, il faut donc chercher ce que c'est
            Type   tp           = objetInterroge.GetType();
            string strPropDebut = strPropriete.Split('.')[0];
            object objetPremier = CInterpreteurTextePropriete.GetValue(objetInterroge, strPropDebut);

            if (objetPremier == null)
            {
                string strIdChamp = CDefinitionProprieteDynamiqueChampCustom.GetIdPropriete(strPropDebut);
                foreach (CDefinitionProprieteDynamique def in fournisseur.GetDefinitionsChamps(tp, 0))
                {
                    if (def.NomPropriete == strPropDebut ||
                        (strIdChamp != "" && def is CDefinitionProprieteDynamiqueChampCustom) &&
                        ((CDefinitionProprieteDynamiqueChampCustom)def).DbKeyChamp == CDbKey.CreateFromStringValue(strIdChamp))
                    {
                        objetPremier = GetValue(objetInterroge, def);
                        //Si la suite est une relation de la valeur champ vers l'objet, il ne faut pas
                        //traier la suite
                        if (strPropDebut != strPropriete)
                        {
                            string strSuiteTmp = strPropriete.Substring(strPropDebut.Length + 1);
                            if (CInfoRelationComposantFiltreChampToEntite.IsRelationFromChampToEntite(strSuiteTmp))
                            {
                                //On a déjà traité ce lien par GetValeurPropriété (qui retourne la valeur
                                //et nom pas le lien vers la valeur)
                                strPropDebut += "." + strPropriete.Split('.')[1];
                            }
                        }

                        break;
                    }
                }
            }
            if (objetPremier == null)
            {
                return(null);
            }
            if (strPropDebut == strPropriete)
            {
                return(objetPremier);
            }
            string strSuite = strPropriete.Substring(strPropDebut.Length + 1);

            return(GetValue(objetPremier, strSuite));
        }