Safe.cs
66 lines
| 2.0 KiB
| text/x-csharp
|
CSharpLexer
/ Implab / Safe.cs
|
|
r1 | using System; | ||
| using System.Collections.Generic; | ||||
| using System.Linq; | ||||
| using System.Text; | ||||
|
|
r51 | using System.Text.RegularExpressions; | ||
|
|
r66 | using System.Diagnostics; | ||
|
|
r1 | |||
| namespace Implab | ||||
| { | ||||
| public static class Safe | ||||
| { | ||||
|
|
r51 | public static void ArgumentMatch(string param, string name, Regex rx) { | ||
| if (rx == null) | ||||
| throw new ArgumentNullException("rx"); | ||||
| if (!rx.IsMatch(param)) | ||||
| throw new ArgumentException(String.Format("A prameter value must match {0}", rx), name); | ||||
| } | ||||
| public static void ArgumentNotEmpty(string param, string name) { | ||||
| if (String.IsNullOrEmpty(param)) | ||||
| throw new ArgumentException("A parameter can't be empty", name); | ||||
| } | ||||
| public static void ArgumentNotNull(object param, string name) { | ||||
| if (param == null) | ||||
| throw new ArgumentNullException(name); | ||||
| } | ||||
|
|
r55 | public static void ArgumentInRange(int arg, int min, int max, string name) { | ||
| if (arg < min || arg > max) | ||||
| throw new ArgumentOutOfRangeException(name); | ||||
| } | ||||
|
|
r31 | public static void Dispose<T>(T obj) where T : class | ||
|
|
r1 | { | ||
|
|
r2 | var disp = obj as IDisposable; | ||
| if (disp != null) | ||||
| disp.Dispose(); | ||||
|
|
r1 | } | ||
|
|
r66 | |||
| [DebuggerStepThrough] | ||||
| public static IPromise<T> GuargPromise<T>(Func<T> action) { | ||||
| ArgumentNotNull(action, "action"); | ||||
| var p = new Promise<T>(); | ||||
| try { | ||||
| p.Resolve(action()); | ||||
| } catch (Exception err) { | ||||
| p.Reject(err); | ||||
| } | ||||
| return p; | ||||
| } | ||||
| [DebuggerStepThrough] | ||||
| public static IPromise<T> GuardPromise<T>(Func<IPromise<T>> action) { | ||||
| ArgumentNotNull(action, "action"); | ||||
| try { | ||||
| return action(); | ||||
| } catch (Exception err) { | ||||
| return Promise<T>.ExceptionToPromise(err); | ||||
| } | ||||
| } | ||||
|
|
r1 | } | ||
| } | ||||
