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

MakeDynamic() private static method

private static MakeDynamic ( CallSiteBinder binder, Type returnType, ReadOnlyCollection args ) : DynamicExpression
binder CallSiteBinder
returnType Type
args ReadOnlyCollection
return DynamicExpression
        private static DynamicExpression MakeDynamic(CallSiteBinder binder, Type returnType, ReadOnlyCollection<Expression> args)
        {
            ContractUtils.RequiresNotNull(binder, nameof(binder));

            for (int i = 0; i < args.Count; i++)
            {
                Expression arg = args[i];

                ValidateDynamicArgument(arg, nameof(arg));
            }

            Type delegateType = DelegateHelpers.MakeCallSiteDelegate(args, returnType);

            // Since we made a delegate with argument types that exactly match,
            // we can skip delegate and argument validation

            switch (args.Count)
            {
                case 1: return DynamicExpression.Make(returnType, delegateType, binder, args[0]);
                case 2: return DynamicExpression.Make(returnType, delegateType, binder, args[0], args[1]);
                case 3: return DynamicExpression.Make(returnType, delegateType, binder, args[0], args[1], args[2]);
                case 4: return DynamicExpression.Make(returnType, delegateType, binder, args[0], args[1], args[2], args[3]);
                default: return DynamicExpression.Make(returnType, delegateType, binder, args);
            }
        }

Same methods

Expression::MakeDynamic ( Type delegateType, CallSiteBinder binder ) : DynamicExpression
Expression::MakeDynamic ( Type delegateType, CallSiteBinder binder, Expression arg0 ) : DynamicExpression
Expression::MakeDynamic ( Type delegateType, CallSiteBinder binder, Expression arg0, Expression arg1 ) : DynamicExpression
Expression::MakeDynamic ( Type delegateType, CallSiteBinder binder, Expression arg0, Expression arg1, Expression arg2 ) : DynamicExpression
Expression::MakeDynamic ( Type delegateType, CallSiteBinder binder, Expression arg0, Expression arg1, Expression arg2, Expression arg3 ) : DynamicExpression
Expression::MakeDynamic ( Type delegateType, CallSiteBinder binder, IEnumerable arguments ) : DynamicExpression

Usage Example

Ejemplo n.º 1
0
 public DynamicExpression Update(IEnumerable <Expression> arguments)
 {
     if (arguments == this.Arguments)
     {
         return(this);
     }
     return(Expression.MakeDynamic(this.DelegateType, this.Binder, arguments));
 }
All Usage Examples Of System.Linq.Expressions.Expression::MakeDynamic
Expression