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()); }
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()); }
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()); }
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()); }
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);
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);
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);
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>());
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);
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>());
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);
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);
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);
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);
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);
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);
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);