Class Safe
Miscelaneous helpers to enhance reliability of resource allocation, error handling, etc..
public static class Safe
- Inheritance
-
Safe
- Inherited Members
Fields
DisastrousExceptions
List of exceptions that are considered disastrous.
public static readonly IList<Type> DisastrousExceptions
Field Value
Methods
Allocated<T, D>(Func<D, T>)
Safely returns a newly allocated object that depends on a IDisposable object.
public static T? Allocated<T, D>(Func<D, T> allocT) where D : class, IDisposable, new()
Parameters
allocTFunc<D, T>A delegate that creates an instance of type T.
Returns
- T
instance of T
Type Parameters
TThe type returned.
DA a reference type that implements IDisposable and has a default ctor.
Remarks
When the allocation succeeds, the IDisposable object of type D is assumed to be owned by
the returned object of type T. (i.e. the returned object is responsible for disposing)
Allocated<T, D>(Func<D>, Func<D, T>)
Safely returns a newly allocated object that depends on a IDisposable object.
public static T? Allocated<T, D>(Func<D> allocD, Func<D, T> allocT) where D : class, IDisposable
Parameters
allocDFunc<D>A delegate that creates an instance of disposable type D
allocTFunc<D, T>A delegate that creates an instance of type T.
Returns
- T
instance of T
Type Parameters
TThe type returned.
DA a reference type that implements IDisposable.
Remarks
When the allocation succeeds, the IDisposable object of type D is assumed to be owned by
the returned object of type T. (i.e. the returned object is responsible for disposing)
Allocated<T, D>(Func<D>, Func<D, T>, Action<D?, T?>)
Safely returns a newly allocated IDisposable object that depends on another IDisposable object.
public static T? Allocated<T, D>(Func<D> allocD, Func<D, T> allocT, Action<D?, T?> setupT) where T : class, IDisposable where D : class, IDisposable
Parameters
allocDFunc<D>A delegate that creates an instance of disposable type D
allocTFunc<D, T>A delegate that creates an instance of type T.
setupTAction<D, T>A delegate to further setup an instance of type T.
Returns
- T
instance of T
Type Parameters
TThe type returned.
DA a reference type that implements IDisposable and has a default ctor.
Remarks
The object is returned after all these operations succeed:
- creation of the other object
- creation of the initial object to be returned
- the further setup of the object to be returned
If any of these operations fails (by throwing an exception), it is guaranteed that all created objects get disposed properly.
CompareExchange<T>(ref T, T, Func<T>)
Compares location with comparand (of reference type T for reference equality and,
if they are equal, replaces location with the value returned from valueCreator.
public static T CompareExchange<T>(ref T location, T comparand, Func<T> valueCreator) where T : class?
Parameters
locationTcomparandTvalueCreatorFunc<T>
Returns
- T
The original value in
location
Type Parameters
T
HandleDisastrousCondition(Exception)
Consider whether the e is critical and thus must terminate the process fast leaving the exception unhandled.
public static void HandleDisastrousCondition(Exception e)
Parameters
Remarks
This check should only be used in top level catch clauses.
LoadType(string, string)
Loads a type specified as qualifiedTypeName.
public static Type LoadType(string qualifiedTypeName, string typeDesc)
Parameters
Returns
Exceptions
- AppConfigException
When type loading failed. Using
typeDescin error...
NoDisastrousCondition(Exception)
Check if an exception type is critical and thus should terminate the process leaving the exception unhandled.
public static bool NoDisastrousCondition(Exception e)
Parameters
Returns
Remarks
This check should only be used in top level catch clauses.
Undisposable<T>(ref T?)
Returns the passed obj and makes the the variable holding this reference undisposable
by setting it to null for the caller.
public static T? Undisposable<T>(ref T? obj) where T : class, IDisposable
Parameters
objT
Returns
- T
obj
Type Parameters
Ttype of
obj