Пример #1
0
        //--------------------------------------------------------------
        public List <CReferenceObjetDependant> GetDependances(CEntitiesManager manager, CObjetDonnee objet)
        {
            objet.Refresh();
            List <CReferenceObjetDependant> lst = new List <CReferenceObjetDependant>();

            if (objet == null)
            {
                return(lst);
            }
            Type tp = objet.GetType();

            foreach (PropertyInfo info in tp.GetProperties())
            {
                if (info.GetCustomAttribute <BlobDecoderAttribute>(true) != null)
                {
                    try
                    {
                        DynamicFieldAttribute df = info.GetCustomAttribute <DynamicFieldAttribute>();
                        string        strNomProp = df == null?info.Name:df.NomConvivial;
                        MethodInfo    methode    = info.GetGetMethod();
                        List <CDbKey> lstKeys    = new List <CDbKey>();
                        using (CDbKeyReaderTracker tracker = new CDbKeyReaderTracker())
                        {
                            if (methode != null)
                            {
                                methode.Invoke(objet, new object[0]);
                            }
                            ;
                            lstKeys.AddRange(tracker.TrackedKeys);
                        }
                        foreach (CDbKey key in lstKeys)
                        {
                            Type tpChild = manager.GetTypeForUniversalId(key.StringValue);
                            if (tpChild != null && !manager.ConfigurationRecherche.IsIgnore(tpChild))
                            {
                                lst.Add(new CReferenceObjetDependant(strNomProp, tpChild, key));
                            }
                        }
                    }
                    catch { }
                }
            }
            return(lst);
        }