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
sourceExpression<Func<T, TMember>>Source lambda expression.
Returns
- string
Name of the source's type member extracted from the provided lambda expression.
Type Parameters
TSource type.
TMemberSource member's type.
Exceptions
- ArgumentException
When
sourceBody 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
expressionExpressionSource expression.
expectedTypeTypeExpected expression type.
Returns
- Expression
Provided
expressionif 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
expressionExpressionSource expression.
Returns
- Expression
Provided
expressionif its type is equal to the expected type, otherwise a conversion UnaryExpression.
Type Parameters
TExpected expression type.
GetValueOrDefault<T>(ConstantExpression)
Attempts to extract typed Value from the provided expression.
[Pure]
public static T? GetValueOrDefault<T>(this ConstantExpression expression)
Parameters
expressionConstantExpressionSource constant expression.
Returns
- T
Extracted value, if it is an instance of the provided type, otherwise default value.
Type Parameters
TExpected 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
expressionExpressionSource 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
expressionExpressionSource 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
expressionExpressionExpression to rewrite.
parameterToReplaceParameterExpressionParameterExpression node to replace.
replacementExpressionReplacement 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
expressionExpressionExpression to rewrite.
parametersToReplaceParameterExpression[]Collection of ParameterExpression nodes to replace.
replacementsExpression[]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
expressionExpressionExpression to rewrite.
parametersToReplaceIReadOnlyDictionary<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
enumerableExpressionSource enumerable expression.
enumeratorVariableNamestringOptional enumerator variable name. Equal to "enumerator" by default.
currentVariableNamestringOptional 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
expressionConstantExpressionSource constant expression.
resultTout 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
TExpected value type.