/// <summary> /// /// </summary> /// <param name="integersAsByteArrayLittleEndian"></param> /// <param name="currentCountOfIntegers"></param> /// <param name="maximumCountOfIntegers"></param> /// <exception cref="ArgumentOutOfRangeException"></exception> /// <exception cref="ArgumentException"></exception> /// <exception cref="ArgumentNullException"></exception> public IntegerListConstrained(byte[] integersAsByteArrayLittleEndian, int currentCountOfIntegers, int maximumCountOfIntegers) { MethodArgumentValidator.ThrowIfNegative(currentCountOfIntegers, "currentCountOfIntegers"); MethodArgumentValidator.ThrowIfNegative(maximumCountOfIntegers, "maximumCountOfIntegers"); MethodArgumentValidator.ThrowIfNull(integersAsByteArrayLittleEndian, "integersAsByteArrayLittleEndian"); if (currentCountOfIntegers * IntegerSizeInBytes > integersAsByteArrayLittleEndian.Length) { throw new ArgumentException("Из массива байт не удастся прочитать следующее число целых: {0}. Проверьте аргументы.".FormatWith(currentCountOfIntegers), "currentCountOfIntegers"); } if (maximumCountOfIntegers < currentCountOfIntegers) { throw new ArgumentException("Максимальное число целых в списке не может быть меньше текущего числа элементов.".FormatWith(currentCountOfIntegers), "currentCountOfIntegers, maximumCountOfIntegers"); } this.FillInInternalListOfIntegers(integersAsByteArrayLittleEndian, currentCountOfIntegers); _maximumCountOfIntegers = maximumCountOfIntegers; }
/// <summary> /// /// </summary> /// <param name="initialValue"></param> /// <param name="capacitiesOfIndexes"></param> /// <exception cref="ArgumentException"></exception> /// <exception cref="ArgumentNullException"></exception> /// <exception cref="ArgumentOutOfRangeException"></exception> public CompositeIndex(int initialValue, IEnumerable <int> capacitiesOfIndexes) { MethodArgumentValidator.ThrowIfNegative(initialValue, "initialValue"); MethodArgumentValidator.ThrowIfNull(capacitiesOfIndexes, "capacitiesOfIndexes"); if (capacitiesOfIndexes.Any(number => (number <= 0))) { throw new ArgumentException("Массив не должен содержать отрицательных чисел и нулей.", "capacitiesOfIndexes"); } var ordersList = new List <int>(capacitiesOfIndexes); if (ordersList.Count < 1) { throw new ArgumentException("Набор должен быть непустым.", "capacitiesOfIndexes"); } _capacitiesOfCompositeIndexes = ordersList.AsReadOnly(); _maximumValue = GetMaximumCapacityForGivenSystemValidatingInput(capacitiesOfIndexes) - 1; _capacity = GetMaximumCapacityForGivenSystemValidatingInput(capacitiesOfIndexes); this.AssignNewValue(initialValue); }