Terraria v1.4.4.9
Terraria source code documentation
Loading...
Searching...
No Matches
InvocationExpression4.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 private readonly Expression _arg3;
15
16 public override int ArgumentCount => 4;
17
18 public InvocationExpression4(Expression lambda, Type returnType, Expression arg0, Expression arg1, Expression arg2, Expression arg3)
19 : base(lambda, returnType)
20 {
21 _arg0 = arg0;
22 _arg1 = arg1;
23 _arg2 = arg2;
24 _arg3 = arg3;
25 }
26
28 {
29 return ExpressionUtils.ReturnReadOnly(this, ref _arg0);
30 }
31
32 public override Expression GetArgument(int index)
33 {
34 return index switch
35 {
36 0 => ExpressionUtils.ReturnObject<Expression>(_arg0),
37 1 => _arg1,
38 2 => _arg2,
39 3 => _arg3,
40 _ => throw new ArgumentOutOfRangeException("index"),
41 };
42 }
43
44 internal override InvocationExpression Rewrite(Expression lambda, Expression[] arguments)
45 {
46 if (arguments != null)
47 {
48 return System.Linq.Expressions.Expression.Invoke(lambda, arguments[0], arguments[1], arguments[2], arguments[3]);
49 }
51 }
52}
static ReadOnlyCollection< ParameterExpression > ReturnReadOnly(IParameterProvider provider, ref object collection)
static InvocationExpression Invoke(Expression expression)
InvocationExpression4(Expression lambda, Type returnType, Expression arg0, Expression arg1, Expression arg2, Expression arg3)
override ReadOnlyCollection< Expression > GetOrMakeArguments()
override InvocationExpression Rewrite(Expression lambda, Expression[] arguments)