Пример #1
0
 public bool HasValues()
 {
     if (Mode == ConfigurationSaveMode.Full)
     {
         return(true);
     }
     return(Element.HasValues(Parent, Mode));
 }
Пример #2
0
        protected internal override void Unmerge(ConfigurationElement sourceElement, ConfigurationElement parentElement, ConfigurationSaveMode updateMode)
        {
            ConfigurationElementCollection source = (ConfigurationElementCollection)sourceElement;
            ConfigurationElementCollection parent = (ConfigurationElementCollection)parentElement;

            for (int n = 0; n < source.Count; n++)
            {
                ConfigurationElement sitem = source.BaseGet(n);
                object key = source.GetElementKey(sitem);
                ConfigurationElement pitem = parent != null?parent.BaseGet(key) as ConfigurationElement : null;

                if (pitem != null && updateMode != ConfigurationSaveMode.Full)
                {
                    ConfigurationElement nitem = CreateNewElementInternal(null);
                    nitem.Unmerge(sitem, pitem, ConfigurationSaveMode.Minimal);
                    if (nitem.HasValues())
                    {
                        BaseAdd(nitem);
                    }
                }
                else
                {
                    ConfigurationElement nitem = CreateNewElementInternal(null);
                    nitem.Unmerge(sitem, null, ConfigurationSaveMode.Full);
                    BaseAdd(nitem);
                }
            }

            if (updateMode == ConfigurationSaveMode.Full)
            {
                EmitClear = true;
            }
            else if (parent != null)
            {
                for (int n = 0; n < parent.Count; n++)
                {
                    ConfigurationElement pitem = parent.BaseGet(n);
                    object key = parent.GetElementKey(pitem);
                    if (source.IndexOfKey(key) == -1)
                    {
                        if (removed == null)
                        {
                            removed = new ArrayList();
                        }
                        removed.Add(pitem);
                    }
                }
            }
        }
        internal override bool HasValues(ConfigurationElement parentElement, ConfigurationSaveMode mode)
        {
            var parent = (ConfigurationElementCollection)parentElement;

            if (mode == ConfigurationSaveMode.Full)
            {
                return(list.Count > 0);
            }

            for (int n = 0; n < list.Count; n++)
            {
                ConfigurationElement elem = (ConfigurationElement)list [n];
                object key = GetElementKey(elem);
                ConfigurationElement pitem = parent != null?parent.BaseGet(key) as ConfigurationElement : null;

                if (elem.HasValues(pitem, mode))
                {
                    return(true);
                }
            }

            return(false);
        }