Esempio n. 1
0
        public static T Match <T>(this MyError myError, Func <MyError.Generic_, T> generic,
                                  Func <MyError.NotFound_, T> notFound, Func <MyError.NotAuthorized_, T> notAuthorized,
                                  Func <MyError.Aggregated_, T> aggregated)
        {
            switch (myError.UnionCase)
            {
            case MyError.UnionCases.Generic:
                return(generic((MyError.Generic_)myError));

            case MyError.UnionCases.NotFound:
                return(notFound((MyError.NotFound_)myError));

            case MyError.UnionCases.NotAuthorized:
                return(notAuthorized((MyError.NotAuthorized_)myError));

            case MyError.UnionCases.Aggregated:
                return(aggregated((MyError.Aggregated_)myError));

            default:
                throw new ArgumentException($"Unknown type derived from MyError: {myError.GetType().Name}");
            }
        }
Esempio n. 2
0
        public static async Task <T> Match <T>(this MyError myError, Func <MyError.Generic_, Task <T> > generic,
                                               Func <MyError.NotFound_, Task <T> > notFound, Func <MyError.NotAuthorized_, Task <T> > notAuthorized,
                                               Func <MyError.Aggregated_, Task <T> > aggregated)
        {
            switch (myError.UnionCase)
            {
            case MyError.UnionCases.Generic:
                return(await generic((MyError.Generic_) myError).ConfigureAwait(false));

            case MyError.UnionCases.NotFound:
                return(await notFound((MyError.NotFound_) myError).ConfigureAwait(false));

            case MyError.UnionCases.NotAuthorized:
                return(await notAuthorized((MyError.NotAuthorized_) myError).ConfigureAwait(false));

            case MyError.UnionCases.Aggregated:
                return(await aggregated((MyError.Aggregated_) myError).ConfigureAwait(false));

            default:
                throw new ArgumentException($"Unknown type derived from MyError: {myError.GetType().Name}");
            }
        }