コード例 #1
0
        /// <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;
        }
コード例 #2
0
        /// <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);
        }