Show / Hide Table of Contents

Class SubstituteTypeExpressionVisitor

The SubstituteTypeExpressionVisitor adjust types in the query substituting types with their substitute values and removes redundant Cast and OfType methods.

Inheritance
System.Object
System.Linq.Expressions.ExpressionVisitor
SubstituteTypeExpressionVisitor
Inherited Members
System.Linq.Expressions.ExpressionVisitor.Visit(System.Collections.ObjectModel.ReadOnlyCollection<System.Linq.Expressions.Expression>)
System.Linq.Expressions.ExpressionVisitor.Visit<T>(System.Collections.ObjectModel.ReadOnlyCollection<T>, System.Func<T, T>)
System.Linq.Expressions.ExpressionVisitor.VisitAndConvert<T>(T, System.String)
System.Linq.Expressions.ExpressionVisitor.VisitAndConvert<T>(System.Collections.ObjectModel.ReadOnlyCollection<T>, System.String)
System.Linq.Expressions.ExpressionVisitor.VisitBinary(System.Linq.Expressions.BinaryExpression)
System.Linq.Expressions.ExpressionVisitor.VisitBlock(System.Linq.Expressions.BlockExpression)
System.Linq.Expressions.ExpressionVisitor.VisitCatchBlock(System.Linq.Expressions.CatchBlock)
System.Linq.Expressions.ExpressionVisitor.VisitConditional(System.Linq.Expressions.ConditionalExpression)
System.Linq.Expressions.ExpressionVisitor.VisitDebugInfo(System.Linq.Expressions.DebugInfoExpression)
System.Linq.Expressions.ExpressionVisitor.VisitDefault(System.Linq.Expressions.DefaultExpression)
System.Linq.Expressions.ExpressionVisitor.VisitDynamic(System.Linq.Expressions.DynamicExpression)
System.Linq.Expressions.ExpressionVisitor.VisitElementInit(System.Linq.Expressions.ElementInit)
System.Linq.Expressions.ExpressionVisitor.VisitExtension(System.Linq.Expressions.Expression)
System.Linq.Expressions.ExpressionVisitor.VisitGoto(System.Linq.Expressions.GotoExpression)
System.Linq.Expressions.ExpressionVisitor.VisitIndex(System.Linq.Expressions.IndexExpression)
System.Linq.Expressions.ExpressionVisitor.VisitInvocation(System.Linq.Expressions.InvocationExpression)
System.Linq.Expressions.ExpressionVisitor.VisitLabel(System.Linq.Expressions.LabelExpression)
System.Linq.Expressions.ExpressionVisitor.VisitLabelTarget(System.Linq.Expressions.LabelTarget)
System.Linq.Expressions.ExpressionVisitor.VisitLambda<T>(System.Linq.Expressions.Expression<T>)
System.Linq.Expressions.ExpressionVisitor.VisitListInit(System.Linq.Expressions.ListInitExpression)
System.Linq.Expressions.ExpressionVisitor.VisitLoop(System.Linq.Expressions.LoopExpression)
System.Linq.Expressions.ExpressionVisitor.VisitMemberAssignment(System.Linq.Expressions.MemberAssignment)
System.Linq.Expressions.ExpressionVisitor.VisitMemberBinding(System.Linq.Expressions.MemberBinding)
System.Linq.Expressions.ExpressionVisitor.VisitMemberInit(System.Linq.Expressions.MemberInitExpression)
System.Linq.Expressions.ExpressionVisitor.VisitMemberListBinding(System.Linq.Expressions.MemberListBinding)
System.Linq.Expressions.ExpressionVisitor.VisitMemberMemberBinding(System.Linq.Expressions.MemberMemberBinding)
System.Linq.Expressions.ExpressionVisitor.VisitNewArray(System.Linq.Expressions.NewArrayExpression)
System.Linq.Expressions.ExpressionVisitor.VisitRuntimeVariables(System.Linq.Expressions.RuntimeVariablesExpression)
System.Linq.Expressions.ExpressionVisitor.VisitSwitch(System.Linq.Expressions.SwitchExpression)
System.Linq.Expressions.ExpressionVisitor.VisitSwitchCase(System.Linq.Expressions.SwitchCase)
System.Linq.Expressions.ExpressionVisitor.VisitTry(System.Linq.Expressions.TryExpression)
System.Linq.Expressions.ExpressionVisitor.VisitTypeBinary(System.Linq.Expressions.TypeBinaryExpression)
System.Object.Equals(System.Object)
System.Object.Equals(System.Object, System.Object)
System.Object.GetHashCode()
System.Object.GetType()
System.Object.MemberwiseClone()
System.Object.ReferenceEquals(System.Object, System.Object)
System.Object.ToString()
Namespace: Kephas.Data.Linq.Expressions
Assembly: Kephas.Data.dll
Syntax
public class SubstituteTypeExpressionVisitor : ExpressionVisitor

Constructors

| Improve this Doc View Source

SubstituteTypeExpressionVisitor(Func<Type, IContext, Type>, IActivator, IEnumerable<ISubstituteTypeConstantHandler>, IContext)

Initializes a new instance of the SubstituteTypeExpressionVisitor class.

Declaration
public SubstituteTypeExpressionVisitor(Func<Type, IContext, Type> implementationTypeResolver = null, IActivator activator = null, IEnumerable<ISubstituteTypeConstantHandler> constantHandlers = null, IContext context = null)
Parameters
Type Name Description
System.Func<System.Type, IContext, System.Type> implementationTypeResolver

The implementation type resolver (optional).

IActivator activator

The activator (optional).

System.Collections.Generic.IEnumerable<ISubstituteTypeConstantHandler> constantHandlers

The constant handlers (optional).

IContext context

The context (optional).

Methods

| Improve this Doc View Source

TryResolveDeepImplementationType(Type)

Tries to get the generic implementation type where the generic type arguments are replaced with implementation types.

Declaration
protected virtual Type TryResolveDeepImplementationType(Type constructedType)
Parameters
Type Name Description
System.Type constructedType

Type of the constructed.

Returns
Type Description
System.Type

A Type.

| Improve this Doc View Source

TryResolveImplementationType(Type)

Tries to get the implementation type of the provided abstract type.

Declaration
protected virtual Type TryResolveImplementationType(Type abstractType)
Parameters
Type Name Description
System.Type abstractType

The abstract type.

Returns
Type Description
System.Type

The implementation type.

Remarks

The provided abstract type may be a collection, in which case the item type is replaced with an implementation type.

| Improve this Doc View Source

Visit(Expression)

Dispatches the expression to one of the more specialized visit methods in this class.

Declaration
public override Expression Visit(Expression node)
Parameters
Type Name Description
System.Linq.Expressions.Expression node

The expression to visit.

Returns
Type Description
System.Linq.Expressions.Expression

The modified expression, if it or any subexpression was modified; otherwise, returns the original expression.

Overrides
System.Linq.Expressions.ExpressionVisitor.Visit(System.Linq.Expressions.Expression)
| Improve this Doc View Source

VisitConstant(ConstantExpression)

Visits the System.Linq.Expressions.ConstantExpression.

Declaration
protected override Expression VisitConstant(ConstantExpression node)
Parameters
Type Name Description
System.Linq.Expressions.ConstantExpression node

The expression to visit.

Returns
Type Description
System.Linq.Expressions.Expression

The modified expression, if it or any subexpression was modified; otherwise, returns the original expression.

Overrides
System.Linq.Expressions.ExpressionVisitor.VisitConstant(System.Linq.Expressions.ConstantExpression)
| Improve this Doc View Source

VisitMember(MemberExpression)

Visits the children of the System.Linq.Expressions.MemberExpression.

Declaration
protected override Expression VisitMember(MemberExpression node)
Parameters
Type Name Description
System.Linq.Expressions.MemberExpression node

The expression to visit.

Returns
Type Description
System.Linq.Expressions.Expression

The modified expression, if it or any subexpression was modified; otherwise, returns the original expression.

Overrides
System.Linq.Expressions.ExpressionVisitor.VisitMember(System.Linq.Expressions.MemberExpression)
| Improve this Doc View Source

VisitMethodCall(MethodCallExpression)

Visits the children of the System.Linq.Expressions.MethodCallExpression.

Declaration
protected override Expression VisitMethodCall(MethodCallExpression node)
Parameters
Type Name Description
System.Linq.Expressions.MethodCallExpression node

The expression to visit.

Returns
Type Description
System.Linq.Expressions.Expression

The modified expression, if it or any subexpression was modified; otherwise, returns the original expression.

Overrides
System.Linq.Expressions.ExpressionVisitor.VisitMethodCall(System.Linq.Expressions.MethodCallExpression)
| Improve this Doc View Source

VisitNew(NewExpression)

Visits the children of the System.Linq.Expressions.NewExpression.

Declaration
protected override Expression VisitNew(NewExpression node)
Parameters
Type Name Description
System.Linq.Expressions.NewExpression node

The expression to visit.

Returns
Type Description
System.Linq.Expressions.Expression

The modified expression, if it or any subexpression was modified; otherwise, returns the original expression.

Overrides
System.Linq.Expressions.ExpressionVisitor.VisitNew(System.Linq.Expressions.NewExpression)
| Improve this Doc View Source

VisitParameter(ParameterExpression)

Visits the System.Linq.Expressions.ParameterExpression.

Declaration
protected override Expression VisitParameter(ParameterExpression node)
Parameters
Type Name Description
System.Linq.Expressions.ParameterExpression node

The expression to visit.

Returns
Type Description
System.Linq.Expressions.Expression

The modified expression, if it or any subexpression was modified; otherwise, returns the original expression.

Overrides
System.Linq.Expressions.ExpressionVisitor.VisitParameter(System.Linq.Expressions.ParameterExpression)
| Improve this Doc View Source

VisitUnary(UnaryExpression)

Visits the children of the System.Linq.Expressions.UnaryExpression.

Declaration
protected override Expression VisitUnary(UnaryExpression node)
Parameters
Type Name Description
System.Linq.Expressions.UnaryExpression node

The expression to visit.

Returns
Type Description
System.Linq.Expressions.Expression

The modified expression, if it or any subexpression was modified; otherwise, returns the original expression.

Overrides
System.Linq.Expressions.ExpressionVisitor.VisitUnary(System.Linq.Expressions.UnaryExpression)

Extension Methods

DynamicObjectExtensions.SetPropertyValue(Object, String, Object)
DynamicObjectExtensions.TrySetPropertyValue(Object, String, Object)
DynamicObjectExtensions.GetPropertyValue(Object, String)
DynamicObjectExtensions.TryGetPropertyValue(Object, String, out Object)
DynamicObjectExtensions.GetRuntimeTypeInfo(Object)
DynamicObjectExtensions.ToDynamic(Object)
DynamicObjectExtensions.ToExpando(Object)
BehaviorValue.ToBehaviorValue<TValue>(TValue)
CollectionExtensions.AddRange<T, TItem>(T, IEnumerable<TItem>)
LoggingExtensions.GetLogger(Object, IContext)
TypeExtensions.GetAbstractType(Object)
TypeExtensions.GetAbstractTypeInfo(Object)
ReflectionHelper.GetTypeInfo(Object)
EntityEntryExtensions.TryGetAttachedEntityEntry(Object)
  • Improve this Doc
  • View Source
Back to top Generated by DocFX