Example #1
0
        public static TResult Match <T1, T2, TResult>(this FSharpChoice <T1, T2> choice, Func <T1, TResult> func1, Func <T2, TResult> func2)
        {
            switch (choice.Tag)
            {
            case FSharpChoice <T1, T2> .Tags.Choice1Of2:
                return(func1((choice.CastTo <FSharpChoice <T1, T2> .Choice1Of2>()).Item));

            case FSharpChoice <T1, T2> .Tags.Choice2Of2:
                return(func2((choice.CastTo <FSharpChoice <T1, T2> .Choice2Of2>()).Item));
            }
            throw new InvalidOperationException();
        }
Example #2
0
        public static FSharpChoice <TR1, TR2> Transform <T1, T2, TR1, TR2>(this FSharpChoice <T1, T2> choice, Func <T1, TR1> func1, Func <T2, TR2> func2)
        {
            switch (choice.Tag)
            {
            case FSharpChoice <T1, T2> .Tags.Choice1Of2:
                return(FSharpChoice <TR1, TR2> .NewChoice1Of2(func1((choice.CastTo <FSharpChoice <T1, T2> .Choice1Of2>()).Item)));

            case FSharpChoice <T1, T2> .Tags.Choice2Of2:
                return(FSharpChoice <TR1, TR2> .NewChoice2Of2(func2((choice.CastTo <FSharpChoice <T1, T2> .Choice2Of2>()).Item)));
            }
            throw new InvalidOperationException();
        }
Example #3
0
        public static TResult Match <T1, T2, T3, T4, TResult>(this FSharpChoice <T1, T2, T3, T4> choice, Func <T1, TResult> func1, Func <T2, TResult> func2, Func <T3, TResult> func3, Func <T4, TResult> func4)
        {
            switch (choice.Tag)
            {
            case FSharpChoice <T1, T2, T3, T4> .Tags.Choice1Of4:
                return(func1((choice.CastTo <FSharpChoice <T1, T2, T3, T4> .Choice1Of4>()).Item));

            case FSharpChoice <T1, T2, T3, T4> .Tags.Choice2Of4:
                return(func2((choice.CastTo <FSharpChoice <T1, T2, T3, T4> .Choice2Of4>()).Item));

            case FSharpChoice <T1, T2, T3, T4> .Tags.Choice3Of4:
                return(func3((choice.CastTo <FSharpChoice <T1, T2, T3, T4> .Choice3Of4>()).Item));

            case FSharpChoice <T1, T2, T3, T4> .Tags.Choice4Of4:
                return(func4((choice.CastTo <FSharpChoice <T1, T2, T3, T4> .Choice4Of4>()).Item));
            }
            throw new InvalidOperationException();
        }
Example #4
0
        public static FSharpChoice <TR1, TR2, TR3, TR4> Transform <T1, T2, T3, T4, TR1, TR2, TR3, TR4>(this FSharpChoice <T1, T2, T3, T4> choice, Func <T1, TR1> func1, Func <T2, TR2> func2, Func <T3, TR3> func3, Func <T4, TR4> func4)
        {
            switch (choice.Tag)
            {
            case FSharpChoice <T1, T2, T3, T4> .Tags.Choice1Of4:
                return(FSharpChoice <TR1, TR2, TR3, TR4> .NewChoice1Of4(func1((choice.CastTo <FSharpChoice <T1, T2, T3, T4> .Choice1Of4>()).Item)));

            case FSharpChoice <T1, T2, T3, T4> .Tags.Choice2Of4:
                return(FSharpChoice <TR1, TR2, TR3, TR4> .NewChoice2Of4(func2((choice.CastTo <FSharpChoice <T1, T2, T3, T4> .Choice2Of4>()).Item)));

            case FSharpChoice <T1, T2, T3, T4> .Tags.Choice3Of4:
                return(FSharpChoice <TR1, TR2, TR3, TR4> .NewChoice3Of4(func3((choice.CastTo <FSharpChoice <T1, T2, T3, T4> .Choice3Of4>()).Item)));

            case FSharpChoice <T1, T2, T3, T4> .Tags.Choice4Of4:
                return(FSharpChoice <TR1, TR2, TR3, TR4> .NewChoice4Of4(func4((choice.CastTo <FSharpChoice <T1, T2, T3, T4> .Choice4Of4>()).Item)));
            }
            throw new InvalidOperationException();
        }