コード例 #1
0
        public static async Task <MethodResult <TResult> > TryMapAsync <TSource, TResult>(
            this Task <TSource> @this,
            Func <TSource, MethodResult <TResult> > function
            )
        {
            var t = await @this;

            return(TryExtensions.Try(() => function(t)));
        }
コード例 #2
0
        public static async Task <MethodResult <TResult> > TryMapAsync <TSource, TResult>(
            this Task <TSource> @this,
            Func <TSource, Task <MethodResult <TResult> > > function,
            int numOfTry
            )
        {
            var t = await @this;

            return(await TryExtensions.TryAsync(() => function(t), numOfTry));
        }
コード例 #3
0
        public static Task <MethodResult> ForEachUntilIsSuccessAsync <TSource, TResult>(
            this Task <IEnumerable <TSource> > @this,
            Func <TSource, Task <MethodResult <TResult> > > function) =>
        TryExtensions.TryAsync(() => @this)
        .OnSuccessAsync(async items => {
            foreach (var item in items)
            {
                var result = await function(item);
                if (!result.IsSuccess)
                {
                    return(MethodResult.Fail(result.Detail));
                }
            }

            return(MethodResult.Ok());
        });
コード例 #4
0
        public static Task <MethodResult> ForEachUntilIsSuccessAsync <T>(
            this Task <IEnumerable <T> > @this,
            Func <T, Task> action) => TryExtensions.TryAsync(() => @this)
        .OnSuccessAsync(async items => {
            var list = items.ToList();
            foreach (var item in list)
            {
                try {
                    await action(item);
                }
                catch (Exception e) {
                    return(MethodResult.Fail(new ExceptionError(e,
                                                                moreDetails: new { thisObj = list, targetItem = item })));
                }
            }

            return(MethodResult.Ok());
        });
コード例 #5
0
        public static Task <MethodResult> ForEachUntilIsSuccessAsync <T>(
            this Task <IEnumerable <MethodResult <T> > > @this,
            Func <T, Task <MethodResult> > function) =>
        TryExtensions.TryAsync(() => @this)
        .OnSuccessAsync(async items => {
            foreach (var item in items)
            {
                if (!item.IsSuccess)
                {
                    return(item.MapMethodResult());
                }

                var result = await function(item.Value);
                if (!result.IsSuccess)
                {
                    return(result);
                }
            }

            return(MethodResult.Ok());
        });
コード例 #6
0
 public static Task <MethodResult> TryTeeOnSuccessAsync(
     this Task <MethodResult> @this,
     Action action) => @this
 .OnSuccessAsync(() => TryExtensions.Try(action));
コード例 #7
0
 public static MethodResult <T> TryTee <T>(
     this T @this,
     Action?action) => TryExtensions.Try(() => @this.Tee(action));
コード例 #8
0
 public static Task <MethodResult <TResult> > TryMapAsync <TSource, TResult>(
     this TSource @this,
     Func <TSource, Task <MethodResult <TResult> > > function,
     int numOfTry
     ) => TryExtensions.TryAsync(() => function(@this), numOfTry);
コード例 #9
0
 public static MethodResult TryTee <TResult>(
     Func <TResult> function) => TryExtensions.Try(() => TeeExtensions.Tee(function));
コード例 #10
0
 public static MethodResult <T> TryTeeUsing <T>(
     this T obj,
     Action <T> action) where T : IDisposable =>
 TryExtensions.Try(() => obj.TeeUsing(action));
コード例 #11
0
 public static MethodResult TryOperateWhen(
     bool predicate, Action action) =>
 OperateWhen(predicate, () => TryExtensions.Try(action));
コード例 #12
0
 public static MethodResult <T> TryOperateWhen <T>(
     this T @this,
     Func <bool> predicateFun,
     Func <T, MethodResult <T> > function
     ) => TryExtensions.Try(predicateFun)
 .OnSuccess(predict => @this.OperateWhen(predict, function));
コード例 #13
0
 public static MethodResult TryTeeOnSuccess(
     this MethodResult @this,
     Action action) => @this
 .OnSuccess(() => TryExtensions.Try(action));
コード例 #14
0
 public static Task <MethodResult <TSource> > TryTeeAsync <TSource, TResult>(
     this Task <TSource> @this, Func <Task <TResult> > function,
     int numOfTry) => TryExtensions.TryAsync(() => @this.TeeAsync(function), numOfTry);
コード例 #15
0
 public static Task <MethodResult <T> > TryTeeAsync <T>(
     this Task <T> @this, Action?action, int numOfTry) =>
 TryExtensions.TryAsync(() => @this.TeeAsync(action), numOfTry);
コード例 #16
0
 public static Task <MethodResult> TryTeeAsync <TResult>(
     Func <Task <TResult> > function, int numOfTry) =>
 TryExtensions.TryAsync(() => TeeAsync(function), numOfTry);
コード例 #17
0
 public static MethodResult TryTee(Action?action) =>
 TryExtensions.Try(() => TeeExtensions.Tee(action));
コード例 #18
0
 public static MethodResult TryOperateWhen(
     Func <bool> predicateFun, Action action) =>
 TryExtensions.Try(predicateFun)
 .OnSuccess(predict => TryOperateWhen(predict, action));
コード例 #19
0
 public static MethodResult <TResult> TryMap <TSource, TResult>(
     this TSource _,
     Func <TResult> onSuccessFunction
     ) => TryExtensions.Try(onSuccessFunction);
コード例 #20
0
 public static MethodResult <T> TryOperateWhen <T>(
     this T @this,
     bool predicate, Action action) =>
 @this.OperateWhen(predicate, () => TryExtensions.Try(action));
コード例 #21
0
 public static MethodResult <TResult> TryMap <TSource, TResult>(
     this TSource @this,
     Func <TSource, MethodResult <TResult> > function) =>
 TryExtensions.Try(() => function(@this));
コード例 #22
0
 public static MethodResult <TResult> TryMapMethodResult <TResult>(
     this MethodResult @this,
     Func <TResult> onSuccessFunction,
     Func <ResultDetail, TResult> onFailFunction
     ) => TryExtensions.Try(() => @this.MapMethodResult(onSuccessFunction, onFailFunction));
コード例 #23
0
 public static Task <MethodResult <TResult> > TryMapAsync <TSource, TResult>(
     this TSource @this,
     Func <TSource, Task <TResult> > onSuccessFunction
     ) => TryExtensions.TryAsync(() => onSuccessFunction(@this));
コード例 #24
0
 public static Task <MethodResult <TResult> > TryUsingAsync <TSource, TResult>(
     this TSource obj,
     Func <TSource, Task <MethodResult <TResult> > > function,
     int numOfTry) where TSource : IDisposable =>
 TryExtensions.TryAsync(() => obj.UsingAsync(function), numOfTry);
コード例 #25
0
 public static Task <MethodResult> TryMapAsync <TSource>(
     this TSource _,
     Func <Task <MethodResult> > onSuccessFunction
     ) => TryExtensions.TryAsync(onSuccessFunction);
コード例 #26
0
 public static MethodResult <TSource> TryTeeUsing <TSource, TResult>(
     this TSource obj,
     Func <TSource, TResult> function) where TSource : IDisposable =>
 TryExtensions.Try(() => obj.TeeUsing(function));
コード例 #27
0
 public static MethodResult <TSource> TryTee <TSource, TResult>(
     this TSource @this,
     Func <TResult> function) => TryExtensions.Try(() => @this.Tee(function));