Table of Contents

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 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

expression Expression

Source expression.

expectedType Type

Expected expression type.

Returns

Expression

Provided expression if its type is equal to expectedType, 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 Expression

Source 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 ConstantExpression

Source 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 Expression

Source 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 Expression

Source 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 Expression

Expression to rewrite.

parameterToReplace ParameterExpression

ParameterExpression node to replace.

replacement Expression

Replacement 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 Expression

Expression 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 Expression

Expression 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?)

[Pure]
public static ExpressionExtensions.ForEachLoopExpressionCreator ToForEachLoop(this Expression enumerable, string? enumeratorVariableName = "enumerator", string? currentVariableName = "current")

Parameters

enumerable Expression

Source enumerable expression.

enumeratorVariableName string

Optional enumerator variable name. Equal to "enumerator" by default.

currentVariableName string

Optional 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 ConstantExpression

Source constant expression.

result T

out 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.