public static async Task <T> RunConditionalPattern(T entry, PatternConditionalDelegate <T> patternConditionalDelegate, PatternResultDelegate <T> patternPassedResultDelegate, PatternDelegate <T> patternFailedDelegate) { var pattern = new ConditionalPattern <T>(patternPassedResultDelegate, patternFailedDelegate); return(await pattern.Run(patternConditionalDelegate, entry)); }
public async Task <T> Run(PatternConditionalDelegate <T> patternConditionalDelegate, T entry) { await Run(entry, false, ConditionalException <T> .Create(async(e) => await Task.FromResult(e != null), typeof(ArgumentNullException), nameof(entry))); if (await patternConditionalDelegate(entry)) { return(await _patternPassedResultDelegate(entry)); } _patternFailedDelegate(entry); return(entry); }
public static ConditionalException <T> Create(PatternConditionalDelegate <T> patternConditionalException, Type exceptionType, params object[] exceptionArgs) { return(new ConditionalException <T>(patternConditionalException, exceptionType, exceptionArgs)); }
private ConditionalException(PatternConditionalDelegate <T> patternConditionalException, Type exceptionType, params object[] exceptionArgs) { _patternConditionalException = patternConditionalException; ExceptionType = exceptionType; _exceptionArgs = exceptionArgs; }