private ReportInvalidLock ( string attribToLockTrim, ConfigurationLockCollectionType lockedType, |
||
attribToLockTrim | string | |
lockedType | ConfigurationLockCollectionType | |
value | ||
collectionProperties | String | |
Résultat | void |
public void Add(string name) { if (((_thisElement.ItemLocked & ConfigurationValueFlags.Locked) != 0) && ((_thisElement.ItemLocked & ConfigurationValueFlags.Inherited) != 0)) { throw new ConfigurationErrorsException(SR.Format(SR.Config_base_attribute_locked, name)); } ConfigurationValueFlags flags = ConfigurationValueFlags.Modified; string attribToLockTrim = name.Trim(); ConfigurationProperty propToLock = _thisElement.Properties[attribToLockTrim]; if ((propToLock == null) && (attribToLockTrim != LockAll)) { ConfigurationElementCollection collection = _thisElement as ConfigurationElementCollection; if ((collection == null) && (_thisElement.Properties.DefaultCollectionProperty != null)) { // this is not a collection but it may contain a default collection collection = _thisElement[_thisElement.Properties.DefaultCollectionProperty] as ConfigurationElementCollection; } if ((collection == null) || (LockType == ConfigurationLockCollectionType.LockedAttributes) || // If the collection type is not element then the lock is bogus (LockType == ConfigurationLockCollectionType.LockedExceptionList)) { _thisElement.ReportInvalidLock(attribToLockTrim, LockType, null, null); } else { if (!collection.IsLockableElement(attribToLockTrim)) { _thisElement.ReportInvalidLock(attribToLockTrim, LockType, null, collection.LockableElements); } } } else { // the lock is in the property bag but is it the correct type? if ((propToLock != null) && propToLock.IsRequired) { throw new ConfigurationErrorsException(SR.Format(SR.Config_base_required_attribute_lock_attempt, propToLock.Name)); } if (attribToLockTrim != LockAll) { if ((LockType == ConfigurationLockCollectionType.LockedElements) || (LockType == ConfigurationLockCollectionType.LockedElementsExceptionList)) { // If it is an element then it must be derived from ConfigurationElement if (!typeof(ConfigurationElement).IsAssignableFrom(propToLock?.Type)) { _thisElement.ReportInvalidLock(attribToLockTrim, LockType, null, null); } } else { // if it is a property then it cannot be derived from ConfigurationElement if (typeof(ConfigurationElement).IsAssignableFrom(propToLock?.Type)) { _thisElement.ReportInvalidLock(attribToLockTrim, LockType, null, null); } } } } if (_internalDictionary.Contains(name)) { flags = ConfigurationValueFlags.Modified | (ConfigurationValueFlags)_internalDictionary[name]; _internalDictionary.Remove(name); // not from parent _internalArraylist.Remove(name); } _internalDictionary.Add(name, flags); // not from parent _internalArraylist.Add(name); IsModified = true; }