mscorlib(4.0.0.0) API with additions
ParameterExpression.cs
1 using System.Diagnostics;
2 
4 {
6  [DebuggerTypeProxy(typeof(ParameterExpressionProxy))]
7  [global::__DynamicallyInvokable]
9  {
10  private readonly string _name;
11 
14  [global::__DynamicallyInvokable]
15  public override Type Type
16  {
17  [global::__DynamicallyInvokable]
18  get
19  {
20  return typeof(object);
21  }
22  }
23 
26  [global::__DynamicallyInvokable]
27  public sealed override ExpressionType NodeType
28  {
29  [global::__DynamicallyInvokable]
30  get
31  {
32  return ExpressionType.Parameter;
33  }
34  }
35 
38  [global::__DynamicallyInvokable]
39  public string Name
40  {
41  [global::__DynamicallyInvokable]
42  get
43  {
44  return _name;
45  }
46  }
47 
50  [global::__DynamicallyInvokable]
51  public bool IsByRef
52  {
53  [global::__DynamicallyInvokable]
54  get
55  {
56  return GetIsByRef();
57  }
58  }
59 
60  internal ParameterExpression(string name)
61  {
62  _name = name;
63  }
64 
65  internal static ParameterExpression Make(Type type, string name, bool isByRef)
66  {
67  if (isByRef)
68  {
69  return new ByRefParameterExpression(type, name);
70  }
71  if (!type.IsEnum)
72  {
73  switch (Type.GetTypeCode(type))
74  {
75  case TypeCode.Boolean:
76  return new PrimitiveParameterExpression<bool>(name);
77  case TypeCode.Byte:
78  return new PrimitiveParameterExpression<byte>(name);
79  case TypeCode.Char:
80  return new PrimitiveParameterExpression<char>(name);
81  case TypeCode.DateTime:
82  return new PrimitiveParameterExpression<DateTime>(name);
83  case TypeCode.DBNull:
84  return new PrimitiveParameterExpression<DBNull>(name);
85  case TypeCode.Decimal:
86  return new PrimitiveParameterExpression<decimal>(name);
87  case TypeCode.Double:
88  return new PrimitiveParameterExpression<double>(name);
89  case TypeCode.Int16:
90  return new PrimitiveParameterExpression<short>(name);
91  case TypeCode.Int32:
92  return new PrimitiveParameterExpression<int>(name);
93  case TypeCode.Int64:
94  return new PrimitiveParameterExpression<long>(name);
95  case TypeCode.Object:
96  if (type == typeof(object))
97  {
98  return new ParameterExpression(name);
99  }
100  if (type == typeof(Exception))
101  {
102  return new PrimitiveParameterExpression<Exception>(name);
103  }
104  if (type == typeof(object[]))
105  {
106  return new PrimitiveParameterExpression<object[]>(name);
107  }
108  break;
109  case TypeCode.SByte:
110  return new PrimitiveParameterExpression<sbyte>(name);
111  case TypeCode.Single:
112  return new PrimitiveParameterExpression<float>(name);
113  case TypeCode.String:
114  return new PrimitiveParameterExpression<string>(name);
115  case TypeCode.UInt16:
116  return new PrimitiveParameterExpression<ushort>(name);
117  case TypeCode.UInt32:
118  return new PrimitiveParameterExpression<uint>(name);
119  case TypeCode.UInt64:
120  return new PrimitiveParameterExpression<ulong>(name);
121  }
122  }
123  return new TypedParameterExpression(type, name);
124  }
125 
126  internal virtual bool GetIsByRef()
127  {
128  return false;
129  }
130 
134  [global::__DynamicallyInvokable]
135  protected internal override Expression Accept(ExpressionVisitor visitor)
136  {
137  return visitor.VisitParameter(this);
138  }
139  }
140 }
static TypeCode GetTypeCode(Type type)
Gets the underlying type code of the specified T:System.Type.
Definition: Type.cs:1199
TypeCode
Specifies the type of an object.
Definition: TypeCode.cs:9
Definition: __Canon.cs:3
string Name
Gets the name of the parameter or variable.
virtual bool IsEnum
Gets a value indicating whether the current T:System.Type represents an enumeration.
Definition: Type.cs:484
bool IsByRef
Indicates that this ParameterExpression is to be treated as a ByRef parameter.
Provides the base class from which the classes that represent expression tree nodes are derived....
Definition: Expression.cs:17
sealed override ExpressionType NodeType
Returns the node type of this T:System.Linq.Expressions.Expression.
Represents type declarations: class types, interface types, array types, value types,...
Definition: Type.cs:18
Represents a named parameter expression.
ExpressionType
Describes the node types for the nodes of an expression tree.
internal override Expression Accept(ExpressionVisitor visitor)
Dispatches to the specific visit method for this node type. For example, T:System....
virtual internal Expression VisitParameter(ParameterExpression node)
Visits the T:System.Linq.Expressions.ParameterExpression.
Represents a visitor or rewriter for expression trees.