Safe.cs
66 lines
| 2.0 KiB
| text/x-csharp
|
CSharpLexer
/ Implab / Safe.cs
cin
|
r1 | using System; | ||
using System.Collections.Generic; | ||||
using System.Linq; | ||||
using System.Text; | ||||
cin
|
r51 | using System.Text.RegularExpressions; | ||
cin
|
r66 | using System.Diagnostics; | ||
cin
|
r1 | |||
namespace Implab | ||||
{ | ||||
public static class Safe | ||||
{ | ||||
cin
|
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); | ||||
} | ||||
cin
|
r55 | public static void ArgumentInRange(int arg, int min, int max, string name) { | ||
if (arg < min || arg > max) | ||||
throw new ArgumentOutOfRangeException(name); | ||||
} | ||||
cin
|
r31 | public static void Dispose<T>(T obj) where T : class | ||
cin
|
r1 | { | ||
cin
|
r2 | var disp = obj as IDisposable; | ||
if (disp != null) | ||||
disp.Dispose(); | ||||
cin
|
r1 | } | ||
cin
|
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); | ||||
} | ||||
} | ||||
cin
|
r1 | } | ||
} | ||||