public T ParseAndValidate <T>(string question, TryParse <T> convert, string error, Func <T, bool> isValid) { if (isValid is null) { throw new ArgumentNullException(nameof(isValid)); } return(ParseAndValidate(question, convert, error, v => isValid(v) ? TryResult <T> .Succeed(v) : error)); }
private TryResult ValidateStartIndex(IReadOnlyList <string> pattern) { if (pattern.Count < 1) { return("Sequence must contain at least one element"); } if (!int.TryParse(pattern[0], out var startIndex) || startIndex != 1) { return("Sequence must start with the number 1"); } return(TryResult.Succeed()); }