コード例 #1
0
        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));
        }
コード例 #2
0
        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);
        }
コード例 #3
0
 public static ConditionalException <T> Create(PatternConditionalDelegate <T> patternConditionalException, Type exceptionType,
                                               params object[] exceptionArgs)
 {
     return(new ConditionalException <T>(patternConditionalException, exceptionType, exceptionArgs));
 }
コード例 #4
0
 private ConditionalException(PatternConditionalDelegate <T> patternConditionalException, Type exceptionType, params object[] exceptionArgs)
 {
     _patternConditionalException = patternConditionalException;
     ExceptionType  = exceptionType;
     _exceptionArgs = exceptionArgs;
 }