System.Linq.Expressions.MemberInitExpression.ReduceListInit C# (CSharp) Méthode

ReduceListInit() static private méthode

static private ReduceListInit ( Expression listExpression, ReadOnlyCollection initializers, bool keepOnStack ) : Expression
listExpression Expression
initializers ReadOnlyCollection
keepOnStack bool
Résultat Expression
        internal static Expression ReduceListInit(Expression listExpression, ReadOnlyCollection<ElementInit> initializers, bool keepOnStack)
        {
            ParameterExpression listVar = Expression.Variable(listExpression.Type, name: null);
            int count = initializers.Count;
            var block = new Expression[count + 2];
            block[0] = Expression.Assign(listVar, listExpression);
            for (int i = 0; i < count; i++)
            {
                ElementInit element = initializers[i];
                block[i + 1] = Expression.Call(listVar, element.AddMethod, element.Arguments);
            }
            block[count + 1] = keepOnStack ? (Expression)listVar : Utils.Empty;
            return Expression.Block(new TrueReadOnlyCollection<Expression>(block));
        }

Usage Example

Exemple #1
0
 /// <summary>
 /// Reduces the binary expression node to a simpler expression.
 /// If CanReduce returns true, this should return a valid expression.
 /// This method is allowed to return another node which itself
 /// must be reduced.
 /// </summary>
 /// <returns>The reduced expression.</returns>
 public override Expression Reduce()
 {
     return(MemberInitExpression.ReduceListInit(_newExpression, _initializers, true));
 }
All Usage Examples Of System.Linq.Expressions.MemberInitExpression::ReduceListInit