Class Patterns
- Namespace
- Cuemon
- Assembly
- Cuemon.Core.dll
Provides a generic way to support different types of design patterns and practices with small utility methods.
public sealed class Patterns
- Inheritance
-
Patterns
Properties
Use
Gets the singleton instance of the Patterns functionality allowing for extensions methods like: Patterns.Use.SomeIngeniousMethod().
public static Patterns Use { get; }
Property Value
- Patterns
The singleton instance of the Patterns functionality.
Methods
ConfigureExchange<TSource, TResult>(Action<TSource>, Action<TSource, TResult>)
Returns the delegate that will configure the public read-write properties of TResult.
public static Action<TResult> ConfigureExchange<TSource, TResult>(Action<TSource> setup, Action<TSource, TResult> initializer = null) where TSource : class, IParameterObject, new() where TResult : class, new()
Parameters
setupAction<TSource>The delegate that will configure the public read-write properties of
TSource.initializerAction<TSource, TResult>The delegate that will exchange the parameter of
setupfromTSourcetoTResult.
Returns
Type Parameters
TSourceThe type of the configuration options class having a default constructor.
TResultThe type of the configuration options class having a default constructor.
ConfigureRevertExchange<TSource, TResult>(TSource, Action<TSource, TResult>)
Returns a delegate that will be initialized by initializer with the values from options.
public static Action<TResult> ConfigureRevertExchange<TSource, TResult>(TSource options, Action<TSource, TResult> initializer = null) where TSource : class, IParameterObject, new() where TResult : class, new()
Parameters
optionsTSourceThe configured options to apply an instance of
TResult.initializerAction<TSource, TResult>The delegate that will initialize a default instance of
TResultwith the values fromoptions.
Returns
Type Parameters
TSourceThe type of the configuration options having a default constructor.
TResultThe type of the configuration options having a default constructor.
Exceptions
- ArgumentNullException
optionscannot be null -or-initializercannot be null.
ConfigureRevert<TOptions>(TOptions)
Returns the delegate that will configure the public read-write properties of TOptions.
public static Action<TOptions> ConfigureRevert<TOptions>(TOptions options) where TOptions : class, new()
Parameters
optionsTOptionsAn instance of the configured options.
Returns
Type Parameters
TOptionsThe type of the configuration options having a default constructor.
Exceptions
- ArgumentNullException
optionscannot be null.
Configure<TOptions>(Action<TOptions>, Action<TOptions>, Action<TOptions>)
Returns the default parameter-less constructed instance of TOptions configured with setup delegate.
public static TOptions Configure<TOptions>(Action<TOptions> setup, Action<TOptions> initializer = null, Action<TOptions> validator = null) where TOptions : class, IParameterObject, new()
Parameters
setupAction<TOptions>The delegate that will configure the public read-write properties of
TOptions.initializerAction<TOptions>The optional delegate that will initialize the default parameter-less constructed instance of
TOptions. Should only be used with third party libraries or for validation purposes.validatorAction<TOptions>The optional delegate that will validate the
TOptionsconfigured by thesetupdelegate.
Returns
- TOptions
A default constructed instance of
TOptionsinitialized with the options ofsetup.
Type Parameters
TOptionsThe type of the configuration options class having a default constructor.
Remarks
Often referred to as part the Options pattern: https://docs.microsoft.com/en-us/aspnet/core/fundamentals/configuration/options
CreateInstance<T>(Action<T>)
Provides a generic way to initialize the default, parameterless constructed instance of T.
public static T CreateInstance<T>(Action<T> factory) where T : class, new()
Parameters
factoryAction<T>The delegate that will initialize the public write properties of
T.
Returns
- T
A default constructed instance of
Tinitialized withfactory.
Type Parameters
TThe type of the class having a default constructor.
InvokeOrDefault<TResult>(Func<TResult>, TResult)
Returns an object of TResult, or a default value if the specified method throws an exception.
public static TResult InvokeOrDefault<TResult>(Func<TResult> method, TResult fallbackResult = default)
Parameters
methodFunc<TResult>The function delegate that will return an instance of
TResult.fallbackResultTResultThe value to return when the specified
methodthrows an exception. Default isdefaultofTResult.
Returns
- TResult
An object of
TResultwhen the specifiedmethodcan be invoked without an exception; otherwisefallbackResultis returned.
Type Parameters
TResultThe type of the return value of the
method.
SafeInvoke<TResult>(Func<TResult>, Func<TResult, TResult>, Action<Exception>)
Provides a generic way to abide the rule description of CA2000 (Dispose objects before losing scope).
public static TResult SafeInvoke<TResult>(Func<TResult> initializer, Func<TResult, TResult> tester, Action<Exception> catcher = null) where TResult : class, IDisposable
Parameters
initializerFunc<TResult>The function delegate that initializes an object implementing the IDisposable interface.
testerFunc<TResult, TResult>The function delegate that is used to ensure that operations performed on
TResultabides CA2000.catcherAction<Exception>The delegate that will handle any exceptions that might have been thrown by
tester.
Returns
- TResult
The return value of the function delegate
initializerif the operations succeeded; otherwise null if the operation failed.
Type Parameters
TResultThe type of the return value of the function delegate
initializer.
SafeInvoke<T, TResult>(Func<TResult>, Func<TResult, T, TResult>, T, Action<Exception, T>)
Provides a generic way to abide the rule description of CA2000 (Dispose objects before losing scope).
public static TResult SafeInvoke<T, TResult>(Func<TResult> initializer, Func<TResult, T, TResult> tester, T arg, Action<Exception, T> catcher = null) where TResult : class, IDisposable
Parameters
initializerFunc<TResult>The function delegate that initializes an object implementing the IDisposable interface.
testerFunc<TResult, T, TResult>The function delegate that is used to ensure that operations performed on
TResultabides CA2000.argTThe parameter of the function delegate
testerand delegatecatcher.catcherAction<Exception, T>The delegate that will handle any exceptions that might have been thrown by
tester.
Returns
- TResult
The return value of the function delegate
initializerif the operations succeeded; otherwise null if the operation failed.
Type Parameters
TThe type of the parameter of the function delegate
testerand delegatecatcher.TResultThe type of the return value of the function delegate
initializer.
SafeInvoke<T1, T2, TResult>(Func<TResult>, Func<TResult, T1, T2, TResult>, T1, T2, Action<Exception, T1, T2>)
Provides a generic way to abide the rule description of CA2000 (Dispose objects before losing scope).
public static TResult SafeInvoke<T1, T2, TResult>(Func<TResult> initializer, Func<TResult, T1, T2, TResult> tester, T1 arg1, T2 arg2, Action<Exception, T1, T2> catcher = null) where TResult : class, IDisposable
Parameters
initializerFunc<TResult>The function delegate that initializes an object implementing the IDisposable interface.
testerFunc<TResult, T1, T2, TResult>The function delegate that is used to ensure that operations performed on
TResultabides CA2000.arg1T1The first parameter of the function delegate
testerand delegatecatcher.arg2T2The second parameter of the function delegate
testerand delegatecatcher.catcherAction<Exception, T1, T2>The delegate that will handle any exceptions that might have been thrown by
tester.
Returns
- TResult
The return value of the function delegate
initializerif the operations succeeded; otherwise null if the operation failed.
Type Parameters
T1The type of the first parameter of the function delegate
testerand delegatecatcher.T2The type of the second parameter of the function delegate
testerand delegatecatcher.TResultThe type of the return value of the function delegate
initializer.
SafeInvoke<T1, T2, T3, TResult>(Func<TResult>, Func<TResult, T1, T2, T3, TResult>, T1, T2, T3, Action<Exception, T1, T2, T3>)
Provides a generic way to abide the rule description of CA2000 (Dispose objects before losing scope).
public static TResult SafeInvoke<T1, T2, T3, TResult>(Func<TResult> initializer, Func<TResult, T1, T2, T3, TResult> tester, T1 arg1, T2 arg2, T3 arg3, Action<Exception, T1, T2, T3> catcher = null) where TResult : class, IDisposable
Parameters
initializerFunc<TResult>The function delegate that initializes an object implementing the IDisposable interface.
testerFunc<TResult, T1, T2, T3, TResult>The function delegate that is used to ensure that operations performed on
TResultabides CA2000.arg1T1The first parameter of the function delegate
testerand delegatecatcher.arg2T2The second parameter of the function delegate
testerand delegatecatcher.arg3T3The third parameter of the function delegate
testerand delegatecatcher.catcherAction<Exception, T1, T2, T3>The delegate that will handle any exceptions that might have been thrown by
tester.
Returns
- TResult
The return value of the function delegate
initializerif the operations succeeded; otherwise null if the operation failed.
Type Parameters
T1The type of the first parameter of the function delegate
testerand delegatecatcher.T2The type of the second parameter of the function delegate
testerand delegatecatcher.T3The type of the third parameter of the function delegate
testerand delegatecatcher.TResultThe type of the return value of the function delegate
initializer.
SafeInvoke<T1, T2, T3, T4, TResult>(Func<TResult>, Func<TResult, T1, T2, T3, T4, TResult>, T1, T2, T3, T4, Action<Exception, T1, T2, T3, T4>)
Provides a generic way to abide the rule description of CA2000 (Dispose objects before losing scope).
public static TResult SafeInvoke<T1, T2, T3, T4, TResult>(Func<TResult> initializer, Func<TResult, T1, T2, T3, T4, TResult> tester, T1 arg1, T2 arg2, T3 arg3, T4 arg4, Action<Exception, T1, T2, T3, T4> catcher = null) where TResult : class, IDisposable
Parameters
initializerFunc<TResult>The function delegate that initializes an object implementing the IDisposable interface.
testerFunc<TResult, T1, T2, T3, T4, TResult>The function delegate that is used to ensure that operations performed on
TResultabides CA2000.arg1T1The first parameter of the function delegate
testerand delegatecatcher.arg2T2The second parameter of the function delegate
testerand delegatecatcher.arg3T3The third parameter of the function delegate
testerand delegatecatcher.arg4T4The fourth parameter of the function delegate
testerand delegatecatcher.catcherAction<Exception, T1, T2, T3, T4>The delegate that will handle any exceptions that might have been thrown by
tester.
Returns
- TResult
The return value of the function delegate
initializerif the operations succeeded; otherwise null if the operation failed.
Type Parameters
T1The type of the first parameter of the function delegate
testerand delegatecatcher.T2The type of the second parameter of the function delegate
testerand delegatecatcher.T3The type of the third parameter of the function delegate
testerand delegatecatcher.T4The type of the fourth parameter of the function delegate
testerand delegatecatcher.TResultThe type of the return value of the function delegate
initializer.
SafeInvoke<T1, T2, T3, T4, T5, TResult>(Func<TResult>, Func<TResult, T1, T2, T3, T4, T5, TResult>, T1, T2, T3, T4, T5, Action<Exception, T1, T2, T3, T4, T5>)
Provides a generic way to abide the rule description of CA2000 (Dispose objects before losing scope).
public static TResult SafeInvoke<T1, T2, T3, T4, T5, TResult>(Func<TResult> initializer, Func<TResult, T1, T2, T3, T4, T5, TResult> tester, T1 arg1, T2 arg2, T3 arg3, T4 arg4, T5 arg5, Action<Exception, T1, T2, T3, T4, T5> catcher = null) where TResult : class, IDisposable
Parameters
initializerFunc<TResult>The function delegate that initializes an object implementing the IDisposable interface.
testerFunc<TResult, T1, T2, T3, T4, T5, TResult>The function delegate that is used to ensure that operations performed on
TResultabides CA2000.arg1T1The first parameter of the function delegate
testerand delegatecatcher.arg2T2The second parameter of the function delegate
testerand delegatecatcher.arg3T3The third parameter of the function delegate
testerand delegatecatcher.arg4T4The fourth parameter of the function delegate
testerand delegatecatcher.arg5T5The fifth parameter of the function delegate
testerand delegatecatcher.catcherAction<Exception, T1, T2, T3, T4, T5>The delegate that will handle any exceptions that might have been thrown by
tester.
Returns
- TResult
The return value of the function delegate
initializerif the operations succeeded; otherwise null if the operation failed.
Type Parameters
T1The type of the first parameter of the function delegate
testerand delegatecatcher.T2The type of the second parameter of the function delegate
testerand delegatecatcher.T3The type of the third parameter of the function delegate
testerand delegatecatcher.T4The type of the fourth parameter of the function delegate
testerand delegatecatcher.T5The type of the fifth parameter of the function delegate
testerand delegatecatcher.TResultThe type of the return value of the function delegate
initializer.
TryInvoke(Action)
Returns a value that indicates whether the specified method can be invoked without an exception.
public static bool TryInvoke(Action method)
Parameters
methodActionThe delegate that to invoke.
Returns
- bool
trueifmethodwas called without raising an exception; otherwisefalse.
Remarks
Actually an anti-pattern in regards to swallowing exception. That said, there are situations where this is a perfectly valid approach.
TryInvoke<TResult>(Func<TResult>, out TResult)
Returns a value that indicates whether the specified method can be invoked without an exception.
public static bool TryInvoke<TResult>(Func<TResult> method, out TResult result)
Parameters
methodFunc<TResult>The function delegate that will resolve
result.resultTResultWhen this method returns, contains the value returned from
method; otherwise the default value for the type of theresultparameter if an exception is thrown.
Returns
- bool
trueif an instance ofTResulthas been created; otherwisefalse.
Type Parameters
TResultThe type of the return value of the
method.
Remarks
Often referred to as the Try-Parse pattern: https://docs.microsoft.com/en-us/dotnet/standard/design-guidelines/exceptions-and-performance