Пример #1
0
        private void ClearExstensions(Content content, int[] exstensionContentIds, List <int> hashCodes)
        {
            int hashCode = content.GetHashCode();

            if (hashCodes == null)
            {
                hashCodes = new List <int> {
                    hashCode
                };
            }
            else if (hashCodes.Contains(hashCode))
            {
                return;
            }
            else
            {
                hashCodes.Add(hashCode);
            }

            var exstensions = content.Fields.OfType <ExtensionField>();

            foreach (var field in exstensions)
            {
                if (field.ContentMapping.Values.Any(c => exstensionContentIds.Contains(c.ContentId)))
                {
                    int[] ids = field.ContentMapping.Where(e => !exstensionContentIds.Contains(e.Value.ContentId)).Select(e => e.Key).ToArray();

                    foreach (int id in ids)
                    {
                        field.ContentMapping.Remove(id);
                    }
                }

                foreach (var c in field.ContentMapping.Values)
                {
                    ClearExstensions(c, exstensionContentIds, hashCodes);
                }
            }

            foreach (var field in content.Fields.OfType <EntityField>())
            {
                ClearExstensions(field.Content, exstensionContentIds, hashCodes);
            }
        }