/// <summary> /// Adds a new Protected range to the list. /// </summary> /// <param name="range">Range to add.</param> public void Add(TProtectedRange range) { TProtectedRange range2 = Validate(range, -1); FList.Add(range2); FDict.Add(range2.Name, range2); }
private TProtectedRange Validate(TProtectedRange range, int index) { if (range == null) { FlxMessages.ThrowException(FlxErr.ErrNullParameter, "range"); } if (string.IsNullOrEmpty(range.Name)) { FlxMessages.ThrowException(FlxErr.ErrNullParameter, "range.Name"); } if (!ValidateName(range.Name)) { FlxMessages.ThrowException(FlxErr.ErrInvalidName, range.Name); } if (index < 0) { if (FDict.ContainsKey(range.Name)) { FlxMessages.ThrowException(FlxErr.ErrRangeNameAlreadyExists, range.Name); } } else { if (FDict[range.Name] != FList[index] && FDict.ContainsKey(range.Name)) { FlxMessages.ThrowException(FlxErr.ErrRangeNameAlreadyExists, range.Name); } } return(range.Clone()); }
/// <summary> /// Returns a deep copy of the object. /// </summary> /// <returns></returns> public TProtectedRange Clone() { TProtectedRange Result = (TProtectedRange)MemberwiseClone(); if (Ranges != null) { Result.Ranges = Ranges; //will clone } return(Result); }
/// <summary> /// The range at position "index" (0 based). This method returns a copy of the range. /// </summary> /// <param name="index"></param> /// <returns></returns> public TProtectedRange this[int index] { get { return(FList[index].Clone()); } set { TProtectedRange range2 = Validate(value, index); FDict.Remove(FList[index].Name); FList[index] = range2; FDict.Add(range2.Name, range2); } }