BExIS.Web.Shell.Areas.DCM.Controllers.FormController.GetCompoundAttributeUsages C# (CSharp) Метод

GetCompoundAttributeUsages() приватный Метод

private GetCompoundAttributeUsages ( BaseUsage usage ) : List
usage BaseUsage
Результат List
        private List<BaseUsage> GetCompoundAttributeUsages(BaseUsage usage)
        {
            List<BaseUsage> list = new List<BaseUsage>();

            if (usage is MetadataPackageUsage)
            {
                MetadataPackageUsage mpu = (MetadataPackageUsage)usage;

                foreach (MetadataAttributeUsage mau in mpu.MetadataPackage.MetadataAttributeUsages)
                {
                    list.AddRange(GetCompoundAttributeUsages(mau));
                }
            }

            if (usage is MetadataAttributeUsage)
            {
                MetadataAttributeUsage mau = (MetadataAttributeUsage)usage;

                if (mau.MetadataAttribute.Self is MetadataCompoundAttribute)
                {
                    list.Add(mau);

                    MetadataCompoundAttribute mca = (MetadataCompoundAttribute)mau.MetadataAttribute.Self;

                    foreach (MetadataNestedAttributeUsage mnau in mca.MetadataNestedAttributeUsages)
                    {
                        list.AddRange(GetCompoundAttributeUsages(mnau));
                    }
                }

            }

            if (usage is MetadataNestedAttributeUsage)
            {
                MetadataNestedAttributeUsage mnau = (MetadataNestedAttributeUsage)usage;

                if (mnau.Member.Self is MetadataCompoundAttribute)
                {
                    list.Add(mnau);

                    MetadataCompoundAttribute mca = (MetadataCompoundAttribute)mnau.Member.Self;

                    foreach (MetadataNestedAttributeUsage m in mca.MetadataNestedAttributeUsages)
                    {
                        list.AddRange(GetCompoundAttributeUsages(m));
                    }
                }
            }

            return list;
        }