All

Initialize a new instance of Continuation<(TFail1, TFail2, TFailN),(TSuccess1, TSuccess2, TSuccessN)> value according to the continuation parameters.

The new Continuation<TFail, TSuccess> will be in Success state only when all parameters are also in this state. Otherwise, it will be in Fail state.

Parameters

Returns

Continuation<TFail1, TSuccess1> continuation1

Continuation<TFail2, TSuccess2> continuation2

Continuation<( Option<TFail1>, Option<TFail2>), (TSuccess1, TSuccess2)>

Continuation<TFail1, TSuccess1> continuation1

Continuation<TFail2, TSuccess2> continuation2

Continuation<TFail3, TSuccess3> continuation3

Continuation<( Option<TFail1>, Option<TFail2>, Option<TFail3>), (TSuccess1, TSuccess2, TSuccess3)>

Continuation<TFail1, TSuccess1> continuation1

Continuation<TFail2, TSuccess2> continuation2

Continuation<TFail3, TSuccess3> continuation3

Continuation<TFail4, TSuccess4> continuation4

Continuation<( Option<TFail1>, Option<TFail2>, Option<TFail3>, Option<TFail4>), (TSuccess1, TSuccess2, TSuccess3,TSuccess4)>

Usage

This method is usually used to merge multiples Continuation pipelines in a single one. You can merge up to four different pipelines and the results will be grouped in tuples.

Merging two pipelines successfully

var continuation1 = 
    ContinuationModule.Resolve<string, int>(10);

var continuation2 = 
    ContinuationModule.Resolve<float, string>("number");

var result = ContinuationModule
                .All(continuation1, continuation2)
                .Then(values => $"{values.Item2} is {values.Item1}")

//result.IsSuccess = true
//result.Success = "number is 10"

Merging pipelines when one of them failed

var continuation1 = 
    ContinuationModule.Resolve<string, int>(10);

var continuation2 = 
    ContinuationModule.Resolve<float, string>("number");

var continuation3 = 
    ContinuationModule.Reject<string, bool>("error");



var result = ContinuationModule
                .All(continuation1, continuation2)
                .Then(values => $"{values.Item2} is {values.Item1}")

//result.IsFail= true
//result.Fail= (
//    Option.IsNone = true,
//    Option.IsNone = true,
//    Option.IsSome = true | Option.Some = "error"
//)

Last updated