/// <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)); }