Ejemplo n.º 1
0
        public static void Execute <T, TException>(this ITryMonad <T> self, Action <T> onSuccess, Action <TException> onError) where TException : Exception
        {
            ITryResult <T> selfResult;

            try {
                selfResult = self.RunTry();
                if (selfResult.IsFaulted)
                {
                    if (selfResult.Exception is TException)
                    {
                        onError(selfResult.Exception as TException);
                    }
                    return;
                }
                else
                {
                    onSuccess(selfResult.Value);
                    return;
                }
            }
            catch (Exception e) {
                if (e is TException)
                {
                    onError(e as TException);
                }
                return;
            }
        }
Ejemplo n.º 2
0
        public static void Execute <T>(this ITryMonad <T> self)
        {
            ITryResult <T> selfResult;

            try {
                selfResult = self.RunTry();
                if (selfResult.IsFaulted)
                {
                    return;
                }
                else
                {
                    return;
                }
            }
            catch {
                return;
            }
        }
Ejemplo n.º 3
0
        public static void Execute <T>(this ITryMonad <T> self, Action <T> onSuccess)
        {
            ITryResult <T> selfResult;

            try {
                selfResult = self.RunTry();
                if (selfResult.IsFaulted)
                {
                    throw(selfResult.Exception);
                }
                else
                {
                    onSuccess(selfResult.Value);
                    return;
                }
            }
            catch (Exception e) {
                throw(e);
            }
        }
Ejemplo n.º 4
0
 public ShareCore(ITryMonad <T> self)
 {
     _self = self;
     _lazy = Lazy.Create <ITryResult <T> >(RunSelf);
 }
Ejemplo n.º 5
0
 public static ITryMonad <T> Share <T>(this ITryMonad <T> self)
 {
     return(new ShareCore <T>(self));
 }
Ejemplo n.º 6
0
 public static ITryMonad <T> If <T>(ITryMonad <T> thenSource, ITryMonad <T> elseSource, Func <bool> selector)
 {
     return(new IfStaticCore <T>(thenSource, elseSource, selector));
 }
Ejemplo n.º 7
0
 public IfStaticCore(ITryMonad <T> thenSource, ITryMonad <T> elseSource, Func <bool> selector)
 {
     _thenSource = thenSource;
     _elseSource = elseSource;
     _selector   = selector;
 }
Ejemplo n.º 8
0
 public ToIdentityCore(ITryMonad <T> self)
 {
     _self = self;
     _lazy = Lazy.Create <ITryResult <T> >(RunSelf);
 }
Ejemplo n.º 9
0
 public static IIdentityMonad <ITryResult <T> > ToIdentity <T>(this ITryMonad <T> self)
 {
     return(new ToIdentityCore <T>(self));
 }
Ejemplo n.º 10
0
 public static ITryMonad <TResult> SelectMany <TFirst, TSecond, TResult>(this ITryMonad <TFirst> self, Func <TFirst, ITryMonad <TSecond> > selector, Func <TFirst, TSecond, TResult> projector)
 {
     return(new SelectManyCore <TFirst, TSecond, TResult>(self, selector, projector));
 }
Ejemplo n.º 11
0
 public static ITryMonad <TResult> Select <T, TResult>(this ITryMonad <T> self, Func <T, TResult> selector)
 {
     return(new SelectCore <T, TResult>(self, selector));
 }
Ejemplo n.º 12
0
 public DoCore(ITryMonad <T> self, Action <ITryResult <T> > action)
 {
     _self   = self;
     _action = action;
 }
Ejemplo n.º 13
0
 public static ITryMonad <T> Do <T>(this ITryMonad <T> self, Action <ITryResult <T> > action)
 {
     return(new DoCore <T>(self, action));
 }
Ejemplo n.º 14
0
 public IfCore(ITryMonad <T> self, ITryMonad <T> elseSource, Func <ITryResult <T>, bool> selector)
 {
     _self       = self;
     _elseSource = elseSource;
     _selector   = selector;
 }
Ejemplo n.º 15
0
 public SelectCore(ITryMonad <T> self, Func <T, TResult> selector)
 {
     _self     = self;
     _selector = selector;
 }
Ejemplo n.º 16
0
 public static ITryMonad <T> If <T>(this ITryMonad <T> self, ITryMonad <T> elseSource, Func <ITryResult <T>, bool> selector)
 {
     return(new IfCore <T>(self, elseSource, selector));
 }
Ejemplo n.º 17
0
 public SelectManyCore(ITryMonad <T> self, Func <T, ITryMonad <TResult> > selector)
 {
     _self     = self;
     _selector = selector;
 }