System.Linq.Expressions.Expression.Call C# (CSharp) Method

Call() public static method

Creates a MethodCallExpression that represents a call to a method that takes no arguments.
public static Call ( Expression instance, MethodInfo method ) : MethodCallExpression
instance Expression An that specifies the instance for an instance call. (pass null for a static (Shared in Visual Basic) method).
method System.Reflection.MethodInfo The that represents the target method.
return MethodCallExpression
        public static MethodCallExpression Call(Expression instance, MethodInfo method)
        {
            ContractUtils.RequiresNotNull(method, nameof(method));

            ParameterInfo[] pis = ValidateMethodAndGetParameters(instance, method);

            ValidateArgumentCount(method, ExpressionType.Call, 0, pis);

            if (instance != null)
            {
                return new InstanceMethodCallExpression0(method, instance);
            }

            return new MethodCallExpression0(method);
        }

Same methods

Expression::Call ( Expression instance, MethodInfo method, Expression arg0 ) : MethodCallExpression
Expression::Call ( Expression instance, MethodInfo method, Expression arg0, Expression arg1 ) : MethodCallExpression
Expression::Call ( Expression instance, MethodInfo method, Expression arg0, Expression arg1, Expression arg2 ) : MethodCallExpression
Expression::Call ( Expression instance, MethodInfo method, IEnumerable arguments ) : MethodCallExpression
Expression::Call ( Expression instance, string methodName, Type typeArguments ) : MethodCallExpression
Expression::Call ( MethodInfo method ) : MethodCallExpression
Expression::Call ( MethodInfo method, Expression arg0 ) : MethodCallExpression
Expression::Call ( MethodInfo method, Expression arg0, Expression arg1 ) : MethodCallExpression
Expression::Call ( MethodInfo method, Expression arg0, Expression arg1, Expression arg2 ) : MethodCallExpression
Expression::Call ( MethodInfo method, Expression arg0, Expression arg1, Expression arg2, Expression arg3 ) : MethodCallExpression
Expression::Call ( MethodInfo method, Expression arg0, Expression arg1, Expression arg2, Expression arg3, Expression arg4 ) : MethodCallExpression
Expression::Call ( MethodInfo method, IEnumerable arguments ) : MethodCallExpression
Expression::Call ( Type type, string methodName, Type typeArguments ) : MethodCallExpression

Usage Example

        private static Func <int[], int[]> GenerateCopyExpression()
        {
            var ctor = typeof(int[]).GetConstructor(new[] { typeof(int) });
            var get  = typeof(int[]).GetMethod("Get", new[] { typeof(int) });
            var set  = typeof(int[]).GetMethod("Set", new[] { typeof(int), typeof(int) });

            var p1     = Exp.Parameter(typeof(int[]));
            var v1     = Exp.Variable(typeof(int[]));
            var v2     = Exp.Variable(typeof(int));
            var @break = Exp.Label();

            var block = Exp.Block(
                new[] { v1, v2 },
                Exp.Assign(v1, Exp.New(ctor, Exp.Property(p1, "Length"))),
                Exp.Assign(v2, Exp.Constant(0)),
                Exp.Loop(
                    Exp.IfThenElse(
                        Exp.LessThan(v2, Exp.Property(p1, "Length")),
                        Exp.Block(
                            Exp.Call(v1, set, v2, Exp.Call(p1, get, v2)),
                            Exp.AddAssign(v2, Exp.Constant(1))
                            ),
                        Exp.Break(@break)
                        ),
                    @break),
                v1
                );

            return(Exp.Lambda <Func <int[], int[]> >(block, new ParameterExpression[] { p1 }).Compile());
        }
All Usage Examples Of System.Linq.Expressions.Expression::Call
Expression