예제 #1
0
        public static async Task <TUnionType> DoAsync <TUnionType, TUnionDefinition, TOne, TTwo, TThree, TFour, TFive, TSix>(this IUnionValue <UnionDefinitionBase <TUnionType, TUnionDefinition, TOne, TTwo, TThree, TFour, TFive, TSix> > union, Func <TOne, Task> one, Func <TTwo, Task> two, Func <TThree, Task> three, Func <TFour, Task> four, Func <TFive, Task> five, Func <TSix, Task> six)
            where TUnionType : struct
            where TUnionDefinition : notnull, UnionDefinitionBase <TUnionType, TUnionDefinition, TOne, TTwo, TThree, TFour, TFive, TSix>
            where TOne : notnull
            where TTwo : notnull
            where TThree : notnull
            where TFour : notnull
            where TFive : notnull
            where TSix : notnull
        {
            await union.Match(one, two, three, four, five, six);

            return(union.AsUnion());
        }
예제 #2
0
        public static TUnionType Do <TUnionType, TUnionDefinition, TOne, TTwo, TThree, TFour, TFive, TSix, TSeven, TEight>(this IUnionValue <UnionDefinitionBase <TUnionType, TUnionDefinition, TOne, TTwo, TThree, TFour, TFive, TSix, TSeven, TEight> > union, Action <TOne> one, Action <TTwo> two, Action <TThree> three, Action <TFour> four, Action <TFive> five, Action <TSix> six, Action <TSeven> seven, Action <TEight> eight)
            where TUnionType : struct
            where TUnionDefinition : UnionDefinitionBase <TUnionType, TUnionDefinition, TOne, TTwo, TThree, TFour, TFive, TSix, TSeven, TEight>
        {
            if (one == null)
            {
                throw new ArgumentNullException(nameof(one));
            }

            if (two == null)
            {
                throw new ArgumentNullException(nameof(two));
            }

            if (three == null)
            {
                throw new ArgumentNullException(nameof(three));
            }

            if (four == null)
            {
                throw new ArgumentNullException(nameof(four));
            }

            if (five == null)
            {
                throw new ArgumentNullException(nameof(five));
            }

            if (six == null)
            {
                throw new ArgumentNullException(nameof(six));
            }

            if (seven == null)
            {
                throw new ArgumentNullException(nameof(seven));
            }

            if (eight == null)
            {
                throw new ArgumentNullException(nameof(eight));
            }

            union.Match(value => { one.Invoke(value); return(false); }, value => { two.Invoke(value); return(false); }, value => { three.Invoke(value); return(false); }, value => { four.Invoke(value); return(false); }, value => { five.Invoke(value); return(false); }, value => { six.Invoke(value); return(false); }, value => { seven.Invoke(value); return(false); }, value => { eight.Invoke(value); return(false); });

            return(union.AsUnion());
        }
예제 #3
0
        public static TUnionType Do <TUnionType, TUnionDefinition, TOne, TTwo>(this IUnionValue <UnionDefinitionBase <TUnionType, TUnionDefinition, TOne, TTwo> > union, Action <TOne> one, Action <TTwo> two)
            where TUnionType : struct
            where TUnionDefinition : UnionDefinitionBase <TUnionType, TUnionDefinition, TOne, TTwo>
        {
            if (one == null)
            {
                throw new ArgumentNullException(nameof(one));
            }

            if (two == null)
            {
                throw new ArgumentNullException(nameof(two));
            }

            union.Match(value => { one.Invoke(value); return(false); }, value => { two.Invoke(value); return(false); });

            return(union.AsUnion());
        }
예제 #4
0
        public static TUnionType Do <TUnionType, TUnionDefinition, TOne, TTwo, TThree, TFour, TFive, TSix>(this IUnionValue <UnionDefinitionBase <TUnionType, TUnionDefinition, TOne, TTwo, TThree, TFour, TFive, TSix> > union, Action <TOne> one, Action <TTwo> two, Action <TThree> three, Action <TFour> four, Action <TFive> five, Action <TSix> six)
            where TUnionType : struct
            where TUnionDefinition : notnull, UnionDefinitionBase <TUnionType, TUnionDefinition, TOne, TTwo, TThree, TFour, TFive, TSix>
            where TOne : notnull
            where TTwo : notnull
            where TThree : notnull
            where TFour : notnull
            where TFive : notnull
            where TSix : notnull
        {
            if (one == null)
            {
                throw new ArgumentNullException(nameof(one));
            }

            if (two == null)
            {
                throw new ArgumentNullException(nameof(two));
            }

            if (three == null)
            {
                throw new ArgumentNullException(nameof(three));
            }

            if (four == null)
            {
                throw new ArgumentNullException(nameof(four));
            }

            if (five == null)
            {
                throw new ArgumentNullException(nameof(five));
            }

            if (six == null)
            {
                throw new ArgumentNullException(nameof(six));
            }

            union.Match(value => { one.Invoke(value); return(false); }, value => { two.Invoke(value); return(false); }, value => { three.Invoke(value); return(false); }, value => { four.Invoke(value); return(false); }, value => { five.Invoke(value); return(false); }, value => { six.Invoke(value); return(false); });

            return(union.AsUnion());
        }
예제 #5
0
 public static Task ApplyAsync <TUnionType, TUnionDefinition, TOne, TTwo>(this IUnionValue <UnionDefinitionBase <TUnionType, TUnionDefinition, TOne, TTwo> > union, Func <TOne, Task> one, Func <TTwo, Task> two)
     where TUnionType : struct
     where TUnionDefinition : UnionDefinitionBase <TUnionType, TUnionDefinition, TOne, TTwo>
 => union.Match(one, two);
예제 #6
0
 public static Option <TFour> Four <TUnionType, TUnionDefinition, TOne, TTwo, TThree, TFour>(this IUnionValue <UnionDefinitionBase <TUnionType, TUnionDefinition, TOne, TTwo, TThree, TFour> > union)
     where TUnionType : struct
     where TUnionDefinition : UnionDefinitionBase <TUnionType, TUnionDefinition, TOne, TTwo, TThree, TFour>
 => union.Match(_ => Option.None <TFour>(), _ => Option.None <TFour>(), _ => Option.None <TFour>(), Option.Some);
예제 #7
0
 public static Option <TOne> One <TUnionType, TUnionDefinition, TOne>(this IUnionValue <UnionDefinitionBase <TUnionType, TUnionDefinition, TOne> > union)
     where TUnionType : struct
     where TUnionDefinition : UnionDefinitionBase <TUnionType, TUnionDefinition, TOne>
 => union.Match(Option.Some);
예제 #8
0
 public static Option <TTwo> Two <TUnionType, TUnionDefinition, TOne, TTwo, TThree>(this IUnionValue <UnionDefinitionBase <TUnionType, TUnionDefinition, TOne, TTwo, TThree> > union)
     where TUnionType : struct
     where TUnionDefinition : UnionDefinitionBase <TUnionType, TUnionDefinition, TOne, TTwo, TThree>
 => union.Match(_ => Option.None <TTwo>(), Option.Some, _ => Option.None <TTwo>());
예제 #9
0
 public static Option <TEight> Eight <TUnionType, TUnionDefinition, TOne, TTwo, TThree, TFour, TFive, TSix, TSeven, TEight>(this IUnionValue <UnionDefinitionBase <TUnionType, TUnionDefinition, TOne, TTwo, TThree, TFour, TFive, TSix, TSeven, TEight> > union)
     where TUnionType : struct
     where TUnionDefinition : UnionDefinitionBase <TUnionType, TUnionDefinition, TOne, TTwo, TThree, TFour, TFive, TSix, TSeven, TEight>
 => union.Match(_ => Option.None <TEight>(), _ => Option.None <TEight>(), _ => Option.None <TEight>(), _ => Option.None <TEight>(), _ => Option.None <TEight>(), _ => Option.None <TEight>(), _ => Option.None <TEight>(), Option.Some);
예제 #10
0
 public static Option <TOne> One <TUnionType, TUnionDefinition, TOne, TTwo, TThree, TFour, TFive, TSix, TSeven>(this IUnionValue <UnionDefinitionBase <TUnionType, TUnionDefinition, TOne, TTwo, TThree, TFour, TFive, TSix, TSeven> > union)
     where TUnionType : struct
     where TUnionDefinition : UnionDefinitionBase <TUnionType, TUnionDefinition, TOne, TTwo, TThree, TFour, TFive, TSix, TSeven>
 => union.Match(Option.Some, _ => Option.None <TOne>(), _ => Option.None <TOne>(), _ => Option.None <TOne>(), _ => Option.None <TOne>(), _ => Option.None <TOne>(), _ => Option.None <TOne>());
예제 #11
0
 public static Task ApplyAsync <TUnionType, TUnionDefinition, TOne>(this IUnionValue <UnionDefinitionBase <TUnionType, TUnionDefinition, TOne> > union, Func <TOne, Task> one)
     where TUnionType : struct
     where TUnionDefinition : notnull, UnionDefinitionBase <TUnionType, TUnionDefinition, TOne>
     where TOne : notnull
 => union.Match(one);
예제 #12
0
 public static Task <TResult> MatchAsync <TUnionType, TUnionDefinition, TOne, TTwo, TThree, TFour, TResult>(this IUnionValue <UnionDefinitionBase <TUnionType, TUnionDefinition, TOne, TTwo, TThree, TFour> > union, Func <TOne, Task <TResult> > one, Func <TTwo, Task <TResult> > two, Func <TThree, Task <TResult> > three, Func <TFour, Task <TResult> > four)
     where TUnionType : struct
     where TUnionDefinition : UnionDefinitionBase <TUnionType, TUnionDefinition, TOne, TTwo, TThree, TFour>
 => union.Match(one, two, three, four);
예제 #13
0
 public static Task <TResult> MatchAsync <TUnionType, TUnionDefinition, TOne, TResult>(this IUnionValue <UnionDefinitionBase <TUnionType, TUnionDefinition, TOne> > union, Func <TOne, Task <TResult> > one)
     where TUnionType : struct
     where TUnionDefinition : UnionDefinitionBase <TUnionType, TUnionDefinition, TOne>
 => union.Match(one);
예제 #14
0
 public static Task <TResult> MatchAsync <TUnionType, TUnionDefinition, TOne, TTwo, TResult>(this IUnionValue <UnionDefinitionBase <TUnionType, TUnionDefinition, TOne, TTwo> > union, Func <TOne, Task <TResult> > one, Func <TTwo, Task <TResult> > two)
     where TUnionType : struct
     where TUnionDefinition : notnull, UnionDefinitionBase <TUnionType, TUnionDefinition, TOne, TTwo>
     where TOne : notnull
     where TTwo : notnull
 => union.Match(one, two);
예제 #15
0
 public static Task ApplyAsync <TUnionType, TUnionDefinition, TOne, TTwo, TThree, TFour, TFive>(this IUnionValue <UnionDefinitionBase <TUnionType, TUnionDefinition, TOne, TTwo, TThree, TFour, TFive> > union, Func <TOne, Task> one, Func <TTwo, Task> two, Func <TThree, Task> three, Func <TFour, Task> four, Func <TFive, Task> five)
     where TUnionType : struct
     where TUnionDefinition : UnionDefinitionBase <TUnionType, TUnionDefinition, TOne, TTwo, TThree, TFour, TFive>
 => union.Match(one, two, three, four, five);
예제 #16
0
 public static Task ApplyAsync <TUnionType, TUnionDefinition, TOne, TTwo, TThree, TFour, TFive, TSix, TSeven, TEight>(this IUnionValue <UnionDefinitionBase <TUnionType, TUnionDefinition, TOne, TTwo, TThree, TFour, TFive, TSix, TSeven, TEight> > union, Func <TOne, Task> one, Func <TTwo, Task> two, Func <TThree, Task> three, Func <TFour, Task> four, Func <TFive, Task> five, Func <TSix, Task> six, Func <TSeven, Task> seven, Func <TEight, Task> eight)
     where TUnionType : struct
     where TUnionDefinition : UnionDefinitionBase <TUnionType, TUnionDefinition, TOne, TTwo, TThree, TFour, TFive, TSix, TSeven, TEight>
 => union.Match(one, two, three, four, five, six, seven, eight);
예제 #17
0
 public static Task <TResult> MatchAsync <TUnionType, TUnionDefinition, TOne, TTwo, TThree, TFour, TFive, TSix, TSeven, TResult>(this IUnionValue <UnionDefinitionBase <TUnionType, TUnionDefinition, TOne, TTwo, TThree, TFour, TFive, TSix, TSeven> > union, Func <TOne, Task <TResult> > one, Func <TTwo, Task <TResult> > two, Func <TThree, Task <TResult> > three, Func <TFour, Task <TResult> > four, Func <TFive, Task <TResult> > five, Func <TSix, Task <TResult> > six, Func <TSeven, Task <TResult> > seven)
     where TUnionType : struct
     where TUnionDefinition : UnionDefinitionBase <TUnionType, TUnionDefinition, TOne, TTwo, TThree, TFour, TFive, TSix, TSeven>
 => union.Match(one, two, three, four, five, six, seven);