本文整理汇总了C#中System.Configuration.ConfigurationElement.MergeLocks方法的典型用法代码示例。如果您正苦于以下问题:C# ConfigurationElement.MergeLocks方法的具体用法?C# ConfigurationElement.MergeLocks怎么用?C# ConfigurationElement.MergeLocks使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类System.Configuration.ConfigurationElement
的用法示例。
在下文中一共展示了ConfigurationElement.MergeLocks方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: BaseAdd
private void BaseAdd(ConfigurationElement element, bool throwIfExists, bool ignoreLocks)
{
bool flagAsReplaced = false;
bool internalAddToEnd = this.internalAddToEnd;
if (this.IsReadOnly())
{
throw new ConfigurationErrorsException(System.Configuration.SR.GetString("Config_base_read_only"));
}
if (base.LockItem && !ignoreLocks)
{
throw new ConfigurationErrorsException(System.Configuration.SR.GetString("Config_base_element_locked", new object[] { this._addElement }));
}
object elementKeyInternal = this.GetElementKeyInternal(element);
int index = -1;
for (int i = 0; i < this._items.Count; i++)
{
Entry entry = (Entry) this._items[i];
if (this.CompareKeys(elementKeyInternal, entry.GetKey(this)))
{
if (((entry._value != null) && entry._value.LockItem) && !ignoreLocks)
{
throw new ConfigurationErrorsException(System.Configuration.SR.GetString("Config_base_collection_item_locked"));
}
if ((entry._entryType != EntryType.Removed) && throwIfExists)
{
if (!element.Equals(entry._value))
{
throw new ConfigurationErrorsException(System.Configuration.SR.GetString("Config_base_collection_entry_already_exists", new object[] { elementKeyInternal }), element.PropertyFileName(""), element.PropertyLineNumber(""));
}
entry._value = element;
return;
}
if (entry._entryType != EntryType.Added)
{
if (((this.CollectionType == ConfigurationElementCollectionType.AddRemoveClearMap) || (this.CollectionType == ConfigurationElementCollectionType.AddRemoveClearMapAlternate)) && ((entry._entryType == EntryType.Removed) && (this._removedItemCount > 0)))
{
this._removedItemCount--;
}
entry._entryType = EntryType.Replaced;
flagAsReplaced = true;
}
if (!internalAddToEnd && (this.CollectionType != ConfigurationElementCollectionType.AddRemoveClearMapAlternate))
{
if (!ignoreLocks)
{
element.HandleLockedAttributes(entry._value);
element.MergeLocks(entry._value);
}
entry._value = element;
this.bModified = true;
return;
}
index = i;
if (entry._entryType == EntryType.Added)
{
internalAddToEnd = true;
}
break;
}
}
if (index >= 0)
{
this._items.RemoveAt(index);
if ((this.CollectionType == ConfigurationElementCollectionType.AddRemoveClearMapAlternate) && (index > ((this.Count + this._removedItemCount) - this._inheritedCount)))
{
this._inheritedCount--;
}
}
this.BaseAddInternal(internalAddToEnd ? -1 : index, element, flagAsReplaced, ignoreLocks);
this.bModified = true;
}
开发者ID:pritesh-mandowara-sp,项目名称:DecompliedDotNetLibraries,代码行数:71,代码来源:ConfigurationElementCollection.cs
示例2: BaseAdd
private void BaseAdd(ConfigurationElement element, bool throwIfExists, bool ignoreLocks)
{
bool flagAsReplaced = false;
bool localAddToEnd = internalAddToEnd;
if (IsReadOnly())
{
throw new ConfigurationErrorsException(SR.GetString(SR.Config_base_read_only));
}
if (LockItem == true && ignoreLocks == false)
{
throw new ConfigurationErrorsException(SR.GetString(SR.Config_base_element_locked, _addElement));
}
Object key = GetElementKeyInternal(element);
int iFoundItem = -1;
for (int index = 0; index < _items.Count; index++)
{
Entry entry = (Entry)_items[index];
if (CompareKeys(key, entry.GetKey(this)))
{
if (entry._value != null && entry._value.LockItem == true && ignoreLocks == false)
{
throw new ConfigurationErrorsException(SR.GetString(SR.Config_base_collection_item_locked));
}
if (entry._entryType != EntryType.Removed && throwIfExists)
{
if (!element.Equals(entry._value))
{
throw new ConfigurationErrorsException(SR.GetString(SR.Config_base_collection_entry_already_exists, key),
element.PropertyFileName(""), element.PropertyLineNumber(""));
}
else
{
entry._value = element;
}
return;
}
if (entry._entryType != EntryType.Added)
{
if ((CollectionType == ConfigurationElementCollectionType.AddRemoveClearMap ||
CollectionType == ConfigurationElementCollectionType.AddRemoveClearMapAlternate) &&
entry._entryType == EntryType.Removed &&
_removedItemCount > 0)
{
_removedItemCount--; // account for the value
}
entry._entryType = EntryType.Replaced;
flagAsReplaced = true;
}
if (localAddToEnd ||
CollectionType == ConfigurationElementCollectionType.AddRemoveClearMapAlternate)
{
iFoundItem = index;
if (entry._entryType == EntryType.Added)
{
// this is a special case for defect number 529517 to emulate everett behavior
localAddToEnd = true;
}
break;
}
else
{
// check to see if the element is trying to set a locked property.
if (ignoreLocks == false)
{
element.HandleLockedAttributes(entry._value);
// copy the lock from the removed element before setting the new element
element.MergeLocks(entry._value);
}
entry._value = element;
bModified = true;
return;
}
}
}
// Brand new item.
if (iFoundItem >= 0)
{
_items.RemoveAt(iFoundItem);
// if the item being removed was inherited adjust the cout
if (CollectionType == ConfigurationElementCollectionType.AddRemoveClearMapAlternate &&
iFoundItem > Count + _removedItemCount - _inheritedCount)
{
_inheritedCount--;
}
}
BaseAddInternal(localAddToEnd ? -1 : iFoundItem, element, flagAsReplaced, ignoreLocks);
bModified = true;
}