网上演练
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

1117 lines
22 KiB

#if NET20 || NET30 || !NET_4_6
// Copyright (c) Microsoft. All rights reserved.
// Licensed under the MIT license. See LICENSE file in the project root for full license information.
using System.Collections.ObjectModel;
using System.Reflection;
namespace System.Linq.Expressions.Reimplement
{
internal class BinaryExpressionProxy
{
private readonly BinaryExpression _node;
public BinaryExpressionProxy(BinaryExpression node)
{
_node = node;
}
public bool CanReduce
{
get { return _node.CanReduce; }
}
public LambdaExpression Conversion
{
get { return _node.Conversion; }
}
public string DebugView
{
get { return _node.DebugView; }
}
public bool IsLifted
{
get { return _node.IsLifted; }
}
public bool IsLiftedToNull
{
get { return _node.IsLiftedToNull; }
}
public Expression Left
{
get { return _node.Left; }
}
public MethodInfo Method
{
get { return _node.Method; }
}
public ExpressionType NodeType
{
get { return _node.NodeType; }
}
public Expression Right
{
get { return _node.Right; }
}
public Type Type
{
get { return _node.Type; }
}
}
internal class BlockExpressionProxy
{
private readonly BlockExpression _node;
public BlockExpressionProxy(BlockExpression node)
{
_node = node;
}
public bool CanReduce
{
get { return _node.CanReduce; }
}
public string DebugView
{
get { return _node.DebugView; }
}
public ReadOnlyCollection<Expression> Expressions
{
get { return _node.Expressions; }
}
public ExpressionType NodeType
{
get { return _node.NodeType; }
}
public Expression Result
{
get { return _node.Result; }
}
public Type Type
{
get { return _node.Type; }
}
public ReadOnlyCollection<ParameterExpression> Variables
{
get { return _node.Variables; }
}
}
internal class CatchBlockProxy
{
private readonly CatchBlock _node;
public CatchBlockProxy(CatchBlock node)
{
_node = node;
}
public Expression Body
{
get { return _node.Body; }
}
public Expression Filter
{
get { return _node.Filter; }
}
public Type Test
{
get { return _node.Test; }
}
public ParameterExpression Variable
{
get { return _node.Variable; }
}
}
internal class ConditionalExpressionProxy
{
private readonly ConditionalExpression _node;
public ConditionalExpressionProxy(ConditionalExpression node)
{
_node = node;
}
public bool CanReduce
{
get { return _node.CanReduce; }
}
public string DebugView
{
get { return _node.DebugView; }
}
public Expression IfFalse
{
get { return _node.IfFalse; }
}
public Expression IfTrue
{
get { return _node.IfTrue; }
}
public ExpressionType NodeType
{
get { return _node.NodeType; }
}
public Expression Test
{
get { return _node.Test; }
}
public Type Type
{
get { return _node.Type; }
}
}
internal class ConstantExpressionProxy
{
private readonly ConstantExpression _node;
public ConstantExpressionProxy(ConstantExpression node)
{
_node = node;
}
public bool CanReduce
{
get { return _node.CanReduce; }
}
public string DebugView
{
get { return _node.DebugView; }
}
public ExpressionType NodeType
{
get { return _node.NodeType; }
}
public Type Type
{
get { return _node.Type; }
}
public object Value
{
get { return _node.Value; }
}
}
internal class DebugInfoExpressionProxy
{
private readonly DebugInfoExpression _node;
public DebugInfoExpressionProxy(DebugInfoExpression node)
{
_node = node;
}
public bool CanReduce
{
get { return _node.CanReduce; }
}
public string DebugView
{
get { return _node.DebugView; }
}
public SymbolDocumentInfo Document
{
get { return _node.Document; }
}
public int EndColumn
{
get { return _node.EndColumn; }
}
public int EndLine
{
get { return _node.EndLine; }
}
public bool IsClear
{
get { return _node.IsClear; }
}
public ExpressionType NodeType
{
get { return _node.NodeType; }
}
public int StartColumn
{
get { return _node.StartColumn; }
}
public int StartLine
{
get { return _node.StartLine; }
}
public Type Type
{
get { return _node.Type; }
}
}
internal class DefaultExpressionProxy
{
private readonly DefaultExpression _node;
public DefaultExpressionProxy(DefaultExpression node)
{
_node = node;
}
public bool CanReduce
{
get { return _node.CanReduce; }
}
public string DebugView
{
get { return _node.DebugView; }
}
public ExpressionType NodeType
{
get { return _node.NodeType; }
}
public Type Type
{
get { return _node.Type; }
}
}
internal class GotoExpressionProxy
{
private readonly GotoExpression _node;
public GotoExpressionProxy(GotoExpression node)
{
_node = node;
}
public bool CanReduce
{
get { return _node.CanReduce; }
}
public string DebugView
{
get { return _node.DebugView; }
}
public GotoExpressionKind Kind
{
get { return _node.Kind; }
}
public ExpressionType NodeType
{
get { return _node.NodeType; }
}
public LabelTarget Target
{
get { return _node.Target; }
}
public Type Type
{
get { return _node.Type; }
}
public Expression Value
{
get { return _node.Value; }
}
}
internal class IndexExpressionProxy
{
private readonly IndexExpression _node;
public IndexExpressionProxy(IndexExpression node)
{
_node = node;
}
public ReadOnlyCollection<Expression> Arguments
{
get { return _node.Arguments; }
}
public bool CanReduce
{
get { return _node.CanReduce; }
}
public string DebugView
{
get { return _node.DebugView; }
}
public PropertyInfo Indexer
{
get { return _node.Indexer; }
}
public ExpressionType NodeType
{
get { return _node.NodeType; }
}
public Expression Object
{
get { return _node.Object; }
}
public Type Type
{
get { return _node.Type; }
}
}
internal class InvocationExpressionProxy
{
private readonly InvocationExpression _node;
public InvocationExpressionProxy(InvocationExpression node)
{
_node = node;
}
public ReadOnlyCollection<Expression> Arguments
{
get { return _node.Arguments; }
}
public bool CanReduce
{
get { return _node.CanReduce; }
}
public string DebugView
{
get { return _node.DebugView; }
}
public Expression Expression
{
get { return _node.Expression; }
}
public ExpressionType NodeType
{
get { return _node.NodeType; }
}
public Type Type
{
get { return _node.Type; }
}
}
internal class LabelExpressionProxy
{
private readonly LabelExpression _node;
public LabelExpressionProxy(LabelExpression node)
{
_node = node;
}
public bool CanReduce
{
get { return _node.CanReduce; }
}
public string DebugView
{
get { return _node.DebugView; }
}
public Expression DefaultValue
{
get { return _node.DefaultValue; }
}
public ExpressionType NodeType
{
get { return _node.NodeType; }
}
public LabelTarget Target
{
get { return _node.Target; }
}
public Type Type
{
get { return _node.Type; }
}
}
internal class LambdaExpressionProxy
{
private readonly LambdaExpression _node;
public LambdaExpressionProxy(LambdaExpression node)
{
_node = node;
}
public Expression Body
{
get { return _node.Body; }
}
public bool CanReduce
{
get { return _node.CanReduce; }
}
public string DebugView
{
get { return _node.DebugView; }
}
public string Name
{
get { return _node.Name; }
}
public ExpressionType NodeType
{
get { return _node.NodeType; }
}
public ReadOnlyCollection<ParameterExpression> Parameters
{
get { return _node.Parameters; }
}
public Type ReturnType
{
get { return _node.ReturnType; }
}
public bool TailCall
{
get { return _node.TailCall; }
}
public Type Type
{
get { return _node.Type; }
}
}
internal class ListInitExpressionProxy
{
private readonly ListInitExpression _node;
public ListInitExpressionProxy(ListInitExpression node)
{
_node = node;
}
public bool CanReduce
{
get { return _node.CanReduce; }
}
public string DebugView
{
get { return _node.DebugView; }
}
public ReadOnlyCollection<ElementInit> Initializers
{
get { return _node.Initializers; }
}
public NewExpression NewExpression
{
get { return _node.NewExpression; }
}
public ExpressionType NodeType
{
get { return _node.NodeType; }
}
public Type Type
{
get { return _node.Type; }
}
}
internal class LoopExpressionProxy
{
private readonly LoopExpression _node;
public LoopExpressionProxy(LoopExpression node)
{
_node = node;
}
public Expression Body
{
get { return _node.Body; }
}
public LabelTarget BreakLabel
{
get { return _node.BreakLabel; }
}
public bool CanReduce
{
get { return _node.CanReduce; }
}
public LabelTarget ContinueLabel
{
get { return _node.ContinueLabel; }
}
public string DebugView
{
get { return _node.DebugView; }
}
public ExpressionType NodeType
{
get { return _node.NodeType; }
}
public Type Type
{
get { return _node.Type; }
}
}
internal class MemberExpressionProxy
{
private readonly MemberExpression _node;
public MemberExpressionProxy(MemberExpression node)
{
_node = node;
}
public bool CanReduce
{
get { return _node.CanReduce; }
}
public string DebugView
{
get { return _node.DebugView; }
}
public Expression Expression
{
get { return _node.Expression; }
}
public MemberInfo Member
{
get { return _node.Member; }
}
public ExpressionType NodeType
{
get { return _node.NodeType; }
}
public Type Type
{
get { return _node.Type; }
}
}
internal class MemberInitExpressionProxy
{
private readonly MemberInitExpression _node;
public MemberInitExpressionProxy(MemberInitExpression node)
{
_node = node;
}
public ReadOnlyCollection<MemberBinding> Bindings
{
get { return _node.Bindings; }
}
public bool CanReduce
{
get { return _node.CanReduce; }
}
public string DebugView
{
get { return _node.DebugView; }
}
public NewExpression NewExpression
{
get { return _node.NewExpression; }
}
public ExpressionType NodeType
{
get { return _node.NodeType; }
}
public Type Type
{
get { return _node.Type; }
}
}
internal class MethodCallExpressionProxy
{
private readonly MethodCallExpression _node;
public MethodCallExpressionProxy(MethodCallExpression node)
{
_node = node;
}
public ReadOnlyCollection<Expression> Arguments
{
get { return _node.Arguments; }
}
public bool CanReduce
{
get { return _node.CanReduce; }
}
public string DebugView
{
get { return _node.DebugView; }
}
public MethodInfo Method
{
get { return _node.Method; }
}
public ExpressionType NodeType
{
get { return _node.NodeType; }
}
public Expression Object
{
get { return _node.Object; }
}
public Type Type
{
get { return _node.Type; }
}
}
internal class NewArrayExpressionProxy
{
private readonly NewArrayExpression _node;
public NewArrayExpressionProxy(NewArrayExpression node)
{
_node = node;
}
public bool CanReduce
{
get { return _node.CanReduce; }
}
public string DebugView
{
get { return _node.DebugView; }
}
public ReadOnlyCollection<Expression> Expressions
{
get { return _node.Expressions; }
}
public ExpressionType NodeType
{
get { return _node.NodeType; }
}
public Type Type
{
get { return _node.Type; }
}
}
internal class NewExpressionProxy
{
private readonly NewExpression _node;
public NewExpressionProxy(NewExpression node)
{
_node = node;
}
public ReadOnlyCollection<Expression> Arguments
{
get { return _node.Arguments; }
}
public bool CanReduce
{
get { return _node.CanReduce; }
}
public ConstructorInfo Constructor
{
get { return _node.Constructor; }
}
public string DebugView
{
get { return _node.DebugView; }
}
public ReadOnlyCollection<MemberInfo> Members
{
get { return _node.Members; }
}
public ExpressionType NodeType
{
get { return _node.NodeType; }
}
public Type Type
{
get { return _node.Type; }
}
}
internal class ParameterExpressionProxy
{
private readonly ParameterExpression _node;
public ParameterExpressionProxy(ParameterExpression node)
{
_node = node;
}
public bool CanReduce
{
get { return _node.CanReduce; }
}
public string DebugView
{
get { return _node.DebugView; }
}
public bool IsByRef
{
get { return _node.IsByRef; }
}
public string Name
{
get { return _node.Name; }
}
public ExpressionType NodeType
{
get { return _node.NodeType; }
}
public Type Type
{
get { return _node.Type; }
}
}
internal class RuntimeVariablesExpressionProxy
{
private readonly RuntimeVariablesExpression _node;
public RuntimeVariablesExpressionProxy(RuntimeVariablesExpression node)
{
_node = node;
}
public bool CanReduce
{
get { return _node.CanReduce; }
}
public string DebugView
{
get { return _node.DebugView; }
}
public ExpressionType NodeType
{
get { return _node.NodeType; }
}
public Type Type
{
get { return _node.Type; }
}
public ReadOnlyCollection<ParameterExpression> Variables
{
get { return _node.Variables; }
}
}
internal class SwitchCaseProxy
{
private readonly SwitchCase _node;
public SwitchCaseProxy(SwitchCase node)
{
_node = node;
}
public Expression Body
{
get { return _node.Body; }
}
public ReadOnlyCollection<Expression> TestValues
{
get { return _node.TestValues; }
}
}
internal class SwitchExpressionProxy
{
private readonly SwitchExpression _node;
public SwitchExpressionProxy(SwitchExpression node)
{
_node = node;
}
public bool CanReduce
{
get { return _node.CanReduce; }
}
public ReadOnlyCollection<SwitchCase> Cases
{
get { return _node.Cases; }
}
public MethodInfo Comparison
{
get { return _node.Comparison; }
}
public string DebugView
{
get { return _node.DebugView; }
}
public Expression DefaultBody
{
get { return _node.DefaultBody; }
}
public ExpressionType NodeType
{
get { return _node.NodeType; }
}
public Expression SwitchValue
{
get { return _node.SwitchValue; }
}
public Type Type
{
get { return _node.Type; }
}
}
internal class TryExpressionProxy
{
private readonly TryExpression _node;
public TryExpressionProxy(TryExpression node)
{
_node = node;
}
public Expression Body
{
get { return _node.Body; }
}
public bool CanReduce
{
get { return _node.CanReduce; }
}
public string DebugView
{
get { return _node.DebugView; }
}
public Expression Fault
{
get { return _node.Fault; }
}
public Expression Finally
{
get { return _node.Finally; }
}
public ReadOnlyCollection<CatchBlock> Handlers
{
get { return _node.Handlers; }
}
public ExpressionType NodeType
{
get { return _node.NodeType; }
}
public Type Type
{
get { return _node.Type; }
}
}
internal class TypeBinaryExpressionProxy
{
private readonly TypeBinaryExpression _node;
public TypeBinaryExpressionProxy(TypeBinaryExpression node)
{
_node = node;
}
public bool CanReduce
{
get { return _node.CanReduce; }
}
public string DebugView
{
get { return _node.DebugView; }
}
public Expression Expression
{
get { return _node.Expression; }
}
public ExpressionType NodeType
{
get { return _node.NodeType; }
}
public Type Type
{
get { return _node.Type; }
}
public Type TypeOperand
{
get { return _node.TypeOperand; }
}
}
internal class UnaryExpressionProxy
{
private readonly UnaryExpression _node;
public UnaryExpressionProxy(UnaryExpression node)
{
_node = node;
}
public bool CanReduce
{
get { return _node.CanReduce; }
}
public string DebugView
{
get { return _node.DebugView; }
}
public bool IsLifted
{
get { return _node.IsLifted; }
}
public bool IsLiftedToNull
{
get { return _node.IsLiftedToNull; }
}
public MethodInfo Method
{
get { return _node.Method; }
}
public ExpressionType NodeType
{
get { return _node.NodeType; }
}
public Expression Operand
{
get { return _node.Operand; }
}
public Type Type
{
get { return _node.Type; }
}
}
}
#endif