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

New() public static method

Creates a new NewExpression that represents calling the specified constructor that takes no arguments.
public static New ( ConstructorInfo constructor ) : NewExpression
constructor System.Reflection.ConstructorInfo The to set the property equal to.
return NewExpression
        public static NewExpression New(ConstructorInfo constructor)
        {
            return New(constructor, (IEnumerable<Expression>)null);
        }

Same methods

Expression::New ( ConstructorInfo constructor, IEnumerable arguments ) : NewExpression
Expression::New ( ConstructorInfo constructor, IEnumerable arguments, IEnumerable members ) : NewExpression
Expression::New ( Type type ) : NewExpression

Usage Example

Ejemplo n.º 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::New
Expression