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

Call() static private method

Creates a MethodCallExpression that represents a call to a method that takes one argument.
static private Call ( Expression instance, MethodInfo method, Expression arg0 ) : 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.
arg0 Expression The that represents the first argument.
return MethodCallExpression
        internal static MethodCallExpression Call(Expression instance, MethodInfo method, Expression arg0)
        {
            // COMPAT: This method is marked as non-public to ensure compile-time compatibility for Expression.Call(e, m, null).

            ContractUtils.RequiresNotNull(method, nameof(method));
            ContractUtils.RequiresNotNull(arg0, nameof(arg0));

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

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

            arg0 = ValidateOneArgument(method, ExpressionType.Call, arg0, pis[0], nameof(method), nameof(arg0));

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

            return new MethodCallExpression1(method, arg0);
        }

Same methods

Expression::Call ( Expression instance, MethodInfo method ) : 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

コード例 #1
0
        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