Safe.cs
114 lines
| 3.8 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 | ||||
| { | ||||
|
|
r161 | public static void ArgumentAssert(bool condition, string paramName) { | ||
| if (!condition) | ||||
| throw new ArgumentException("The parameter is invalid", paramName); | ||||
| } | ||||
|
|
r121 | public static void ArgumentMatch(string value, string paramName, Regex rx) { | ||
|
|
r51 | if (rx == null) | ||
| throw new ArgumentNullException("rx"); | ||||
|
|
r121 | if (!rx.IsMatch(value)) | ||
| throw new ArgumentException(String.Format("The prameter value must match {0}", rx), paramName); | ||||
|
|
r51 | } | ||
|
|
r121 | public static void ArgumentNotEmpty(string value, string paramName) { | ||
| if (String.IsNullOrEmpty(value)) | ||||
| throw new ArgumentException("The parameter can't be empty", paramName); | ||||
|
|
r90 | } | ||
|
|
r121 | public static void ArgumentNotEmpty<T>(T[] value, string paramName) { | ||
| if (value == null || value.Length == 0) | ||||
| throw new ArgumentException("The array must be not emty", paramName); | ||||
|
|
r51 | } | ||
|
|
r121 | public static void ArgumentNotNull(object value, string paramName) { | ||
| if (value == null) | ||||
| throw new ArgumentNullException(paramName); | ||||
|
|
r51 | } | ||
|
|
r121 | public static void ArgumentInRange(int value, int min, int max, string paramName) { | ||
| if (value < min || value > max) | ||||
| throw new ArgumentOutOfRangeException(paramName); | ||||
|
|
r55 | } | ||
|
|
r177 | public static void ArgumentOfType(object value, Type type, string paramName) { | ||
| if (!type.IsInstanceOfType(value)) | ||||
| throw new ArgumentException(String.Format("The parameter must be of type {0}", type), paramName); | ||||
| } | ||||
|
|
r128 | public static void Dispose(params IDisposable[] objects) { | ||
| foreach (var d in objects) | ||||
|
|
r126 | if (d != null) | ||
| d.Dispose(); | ||||
|
|
r1 | } | ||
|
|
r66 | |||
|
|
r128 | public static void Dispose(params object[] objects) { | ||
| foreach (var obj in objects) { | ||||
| var d = obj as IDisposable; | ||||
| if (d != null) | ||||
| d.Dispose(); | ||||
| } | ||||
| } | ||||
| public static void Dispose(object obj) { | ||||
| var d = obj as IDisposable; | ||||
| if (d != null) | ||||
| d.Dispose(); | ||||
| } | ||||
|
|
r66 | [DebuggerStepThrough] | ||
|
|
r203 | public static IPromise<T> Run<T>(Func<T> action) { | ||
|
|
r131 | ArgumentNotNull(action, "action"); | ||
| try { | ||||
|
|
r203 | return Promise<T>.FromResult(action()); | ||
|
|
r131 | } catch (Exception err) { | ||
|
|
r203 | return Promise<T>.FromException(err); | ||
|
|
r131 | } | ||
| } | ||||
| [DebuggerStepThrough] | ||||
|
|
r203 | public static IPromise Run(Action action) { | ||
| ArgumentNotNull(action, "action"); | ||||
| try { | ||||
| action(); | ||||
| return Promise.SUCCESS; | ||||
| } catch (Exception err) { | ||||
| return new FailedPromise(err); | ||||
| } | ||||
| } | ||||
| [DebuggerStepThrough] | ||||
| public static IPromise Run(Func<IPromise> action) { | ||||
| ArgumentNotNull(action, "action"); | ||||
| try { | ||||
| return action() ?? new FailedPromise(new Exception("The action returned null")); | ||||
| } catch (Exception err) { | ||||
| return new FailedPromise(err); | ||||
| } | ||||
| } | ||||
| [DebuggerStepThrough] | ||||
| public static IPromise<T> Run<T>(Func<IPromise<T>> action) { | ||||
|
|
r66 | ArgumentNotNull(action, "action"); | ||
| try { | ||||
|
|
r145 | return action() ?? Promise<T>.FromException(new Exception("The action returned null")); | ||
|
|
r66 | } catch (Exception err) { | ||
|
|
r145 | return Promise<T>.FromException(err); | ||
|
|
r66 | } | ||
| } | ||||
|
|
r1 | } | ||
| } | ||||
