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!"); }
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!"); }
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!"); }