コード例 #1
0
 public static Option <T> ToOption <T>(this IExceptional <T> obj)
 {
     return(obj.Match(Some, _ => None));
 }
コード例 #2
0
ファイル: Exceptional.cs プロジェクト: TheByte/sones
 /// <summary>
 /// Init using a single exceptional.
 /// </summary>
 public Exceptional(IExceptional myIExceptional)
     : this()
 {
     PushIExceptional(myIExceptional);
 }
コード例 #3
0
 public static IExceptional <TResultOut> SelectMany <TResultIn, TResultBind, TResultOut>(this IExceptional <TResultIn> first, Func <TResultIn, IExceptional <TResultBind> > func, Func <TResultIn, TResultBind, TResultOut> select)
 {
     return(first.Bind(aval => func(aval)
                       .Bind(bval => select(aval, bval)
                             .ToExceptional())));
 }
コード例 #4
0
ファイル: Exceptional.cs プロジェクト: TheByte/sones
        /// <summary>
        /// Adds the given exceptional.
        /// </summary>
        public Exceptional PushIExceptional(IExceptional myIExceptional)
        {
            lock (this)
            {

                // Add warnings...
                if (myIExceptional.IWarnings != null && myIExceptional.IWarnings.Any())
                    foreach (var _Warning in myIExceptional.IWarnings.ToList().Reverse<IWarning>())
                        _IWarnings.Push(_Warning);

                // Add errors...
                if (myIExceptional.IErrors != null && myIExceptional.IErrors.Any())
                    foreach (var _Error in myIExceptional.IErrors.ToList().Reverse<IError>())
                        _IErrors.Push(_Error);

                return this;

            }
        }
コード例 #5
0
 public static IExceptional <TResultOut> Bind <TResultIn, TResultOut>(this IExceptional <TResultIn> first, Func <TResultIn, IExceptional <TResultOut> > func)
 {
     return(first.IsException() ?
            ((IInternalException)first).Copy <TResultOut>() :
            func(first.Value()));
 }