Exemplo n.º 1
0
        /// <summary>
        /// Lifts an inner Task out of the OneOf.
        /// </summary>
        /// <typeparam name="TA"></typeparam>
        /// <typeparam name="TB"></typeparam>
        /// <param name="oneOf"></param>
        /// <returns></returns>
        public static async Task <OneOf <TA, TB> > LiftTask <TA, TB>(this OneOf <TA, Task <TB> > oneOf)
        {
            var isA = oneOf.Extract(x => true, x => false);

            if (isA)
            {
                var a = oneOf.Extract(x => x, x => throw new InvalidOperationException());
                return(new OneOf <TA, TB>(a));
            }

            var b = await oneOf.Extract(x => throw new InvalidOperationException(), x => x);

            return(new OneOf <TA, TB>(b));
        }