Class ExpressionExtensions
- Namespace
- LfrlAnvil.Extensions
- Assembly
- LfrlAnvil.Core.dll
Contains Expression extension methods.
public static class ExpressionExtensions
- Inheritance
-
ExpressionExtensions
- Inherited Members
Methods
GetMemberName<T, TMember>(Expression<Func<T, TMember>>)
Extracts member's name from the provided lambda expression.
[Pure]
public static string GetMemberName<T, TMember>(this Expression<Func<T, TMember>> source)
Parameters
source
Expression<Func<T, TMember>>Source lambda expression.
Returns
- string
Name of the source's type member extracted from the provided lambda expression.
Type Parameters
T
Source type.
TMember
Source member's type.
Exceptions
- ArgumentException
When
source
Body is not an instance of MemberExpression type or when body's Expression does not equal to the lambda expression's parameter.
GetOrConvert(Expression, Type)
Converts the provided expression
to an expression
whose Type is equal to expectedType
.
[Pure]
public static Expression GetOrConvert(this Expression expression, Type expectedType)
Parameters
expression
ExpressionSource expression.
expectedType
TypeExpected expression type.
Returns
- Expression
Provided
expression
if its type is equal toexpectedType
, otherwise a conversion UnaryExpression.
GetOrConvert<T>(Expression)
Converts the provided expression
to an expression
whose Type is equal to the expected type..
[Pure]
public static Expression GetOrConvert<T>(this Expression expression)
Parameters
expression
ExpressionSource expression.
Returns
- Expression
Provided
expression
if its type is equal to the expected type, otherwise a conversion UnaryExpression.
Type Parameters
T
Expected expression type.
GetValueOrDefault<T>(ConstantExpression)
Attempts to extract typed Value from the provided expression
.
[Pure]
public static T? GetValueOrDefault<T>(this ConstantExpression expression)
Parameters
expression
ConstantExpressionSource constant expression.
Returns
- T
Extracted value, if it is an instance of the provided type, otherwise default value.
Type Parameters
T
Expected value type.
IsNotNullReference(Expression)
Creates a new BinaryExpression that checks if the provided expression
is not null by reference.
[Pure]
public static BinaryExpression IsNotNullReference(this Expression expression)
Parameters
expression
ExpressionSource expression.
Returns
- BinaryExpression
New BinaryExpression instance.
IsNullReference(Expression)
Creates a new BinaryExpression that checks if the provided expression
is null by reference.
[Pure]
public static BinaryExpression IsNullReference(this Expression expression)
Parameters
expression
ExpressionSource expression.
Returns
- BinaryExpression
New BinaryExpression instance.
ReplaceParameter(Expression, ParameterExpression, Expression)
Rewrites the provided expression
by replacing parameterToReplace
node with replacement
node.
[Pure]
public static Expression ReplaceParameter(this Expression expression, ParameterExpression parameterToReplace, Expression replacement)
Parameters
expression
ExpressionExpression to rewrite.
parameterToReplace
ParameterExpressionParameterExpression node to replace.
replacement
ExpressionReplacement Expression node.
Returns
- Expression
Rewritten
expression
.
Remarks
See ExpressionParameterReplacer for more information.
ReplaceParameters(Expression, ParameterExpression[], Expression[])
Rewrites the provided expression
by replacing ParameterExpression nodes by position.
[Pure]
public static Expression ReplaceParameters(this Expression expression, ParameterExpression[] parametersToReplace, Expression[] replacements)
Parameters
expression
ExpressionExpression to rewrite.
parametersToReplace
ParameterExpression[]Collection of ParameterExpression nodes to replace.
replacements
Expression[]Collection of replacement Expression nodes.
Returns
- Expression
Rewritten
expression
.
Remarks
See ExpressionParameterReplacer for more information.
ReplaceParametersByName(Expression, IReadOnlyDictionary<string, Expression>)
Rewrites the provided expression
by replacing ParameterExpression nodes by name.
[Pure]
public static Expression ReplaceParametersByName(this Expression expression, IReadOnlyDictionary<string, Expression> parametersToReplace)
Parameters
expression
ExpressionExpression to rewrite.
parametersToReplace
IReadOnlyDictionary<string, Expression>Collection of (parameter-name, replacement-node) entries.
Returns
- Expression
Rewritten
expression
.
Remarks
See ExpressionParameterByNameReplacer for more information.
ToForEachLoop(Expression, string?, string?)
Creates a new ExpressionExtensions.ForEachLoopExpressionCreator instance.
[Pure]
public static ExpressionExtensions.ForEachLoopExpressionCreator ToForEachLoop(this Expression enumerable, string? enumeratorVariableName = "enumerator", string? currentVariableName = "current")
Parameters
enumerable
ExpressionSource enumerable expression.
enumeratorVariableName
stringOptional enumerator variable name. Equal to "enumerator" by default.
currentVariableName
stringOptional enumerator's current variable name. Equal to "current" by default.
Returns
- ExpressionExtensions.ForEachLoopExpressionCreator
New ExpressionExtensions.ForEachLoopExpressionCreator instance.
Exceptions
- ArgumentNullException
When any of the required enumerator elements are null.
TryGetValue<T>(ConstantExpression, out T)
Attempts to extract typed Value from the provided expression
.
public static bool TryGetValue<T>(this ConstantExpression expression, out T result)
Parameters
expression
ConstantExpressionSource constant expression.
result
Tout parameter that is set to the extracted value, if it is an instance of the provided type.
Returns
- bool
true when value is an instance of the provided type, otherwise false.
Type Parameters
T
Expected value type.