/// <summary>
 /// Увеличивает уникальный идентификатор Identifier на значение inrementNumber с поддержкой отмены.
 /// </summary>
 /// <param name="id">Уникальный идентификатор</param>
 /// <param name="inrementNumber">Число на которое нужно увеличить уникальный идентификатор,
 /// строка должна содержать только цифры и может быть любой длинны</param>
 /// <param name="isCancelled">Функция для возможности прирывания увеличения уникального идентификатора</param>
 /// <returns></returns>
 public static void Increment(string inrementNumber, Func <bool> isCancelled)
 {
     lock (_lockObject)
     {
         var currentStringNumber  = StringNumber.Parse(_currentIdentifierNumber);
         var inrementStringNumber = StringNumber.Parse(inrementNumber);
         _currentIdentifierNumber = currentStringNumber.Increment(inrementStringNumber, isCancelled).Value;
     }
 }
        public StringNumber Increment(StringNumber stringNumber, Func <bool> isCancelled)
        {
            if (string.IsNullOrEmpty(Value) && string.IsNullOrEmpty(stringNumber.Value))
            {
                return(ZeroStringNumber);
            }

            if (string.IsNullOrEmpty(Value))
            {
                return(stringNumber);
            }

            if (string.IsNullOrEmpty(stringNumber.Value))
            {
                return(this);
            }

            if (IsLessThan(Value, stringNumber.Value))
            {
                return(AddLessLeftNumber(Value, stringNumber.Value, isCancelled));
            }

            return(AddLessLeftNumber(stringNumber.Value, Value, isCancelled));
        }
 public StringNumber Increment(StringNumber stringNumber)
 {
     return(Increment(stringNumber, () => false));
 }