예제 #1
0
        public static bool IsReturn <T>(this IInterpetedResult <T> self, out IInterpetedAnyType returned, out T value)
            where T : IInterpetedAnyType
        {
            if (self is IInterpetedResultNotReturn <T> && self is IInterpetedResultReturn <T> )
            {
                throw new Exception("should not be both!");
            }

            returned = default;
            value    = default;

            if (self is IInterpetedResultNotReturn <T> notReturn)
            {
                value = notReturn.Value;
                return(false);
            }

            if (self is IInterpetedResultReturn <T> toReturn)
            {
                returned = toReturn.Value;
                return(true);
            }

            throw new Exception("should be one!");
        }
예제 #2
0
        public static IInterpetedResult <IInterpetedMember> Return <T>(this IInterpetedResult <T> self)
            where T : class, IInterpetedAnyType
        {
            if (self is IInterpetedResultNotReturn <T> notReturn)
            {
                return(InterpetedResult.Return <IInterpetedMember>(notReturn.Value));
            }

            if (self is IInterpetedResultReturn <T> toReturn)
            {
                return(InterpetedResult.Return <IInterpetedMember>(toReturn.Value));
            }

            throw new Exception("should be one!");
        }
예제 #3
0
        public static TT IsReturn <T, TT>(this IInterpetedResult <T> self, Func <IInterpetedAnyType, TT> returned, Func <T, TT> value)
            where T : class, IInterpetedAnyType
        {
            if (self is IInterpetedResultNotReturn <T> && self is IInterpetedResultReturn <T> )
            {
                throw new Exception("should not be both!");
            }

            if (self is IInterpetedResultNotReturn <T> notReturn)
            {
                return(value(notReturn.Value));
            }

            if (self is IInterpetedResultReturn <T> toReturn)
            {
                return(returned(toReturn.Value));
            }

            throw new Exception("should be one!");
        }