Terraria v1.4.4.9
Terraria source code documentation
Loading...
Searching...
No Matches
InvocationExpression3.cs
Go to the documentation of this file.
3
5
7{
8 private object _arg0;
9
10 private readonly Expression _arg1;
11
12 private readonly Expression _arg2;
13
14 public override int ArgumentCount => 3;
15
16 public InvocationExpression3(Expression lambda, Type returnType, Expression arg0, Expression arg1, Expression arg2)
17 : base(lambda, returnType)
18 {
19 _arg0 = arg0;
20 _arg1 = arg1;
21 _arg2 = arg2;
22 }
23
25 {
26 return ExpressionUtils.ReturnReadOnly(this, ref _arg0);
27 }
28
29 public override Expression GetArgument(int index)
30 {
31 return index switch
32 {
33 0 => ExpressionUtils.ReturnObject<Expression>(_arg0),
34 1 => _arg1,
35 2 => _arg2,
36 _ => throw new ArgumentOutOfRangeException("index"),
37 };
38 }
39
40 internal override InvocationExpression Rewrite(Expression lambda, Expression[] arguments)
41 {
42 if (arguments != null)
43 {
44 return System.Linq.Expressions.Expression.Invoke(lambda, arguments[0], arguments[1], arguments[2]);
45 }
47 }
48}
static ReadOnlyCollection< ParameterExpression > ReturnReadOnly(IParameterProvider provider, ref object collection)
static InvocationExpression Invoke(Expression expression)
InvocationExpression3(Expression lambda, Type returnType, Expression arg0, Expression arg1, Expression arg2)
override InvocationExpression Rewrite(Expression lambda, Expression[] arguments)
override ReadOnlyCollection< Expression > GetOrMakeArguments()