System.Linq.Expressions.NewArrayExpression.Make C# (CSharp) Метод

Make() статический приватный Метод

static private Make ( ExpressionType nodeType, Type type, ReadOnlyCollection expressions ) : NewArrayExpression
nodeType ExpressionType
type System.Type
expressions ReadOnlyCollection
Результат NewArrayExpression
        internal static NewArrayExpression Make(ExpressionType nodeType, Type type, ReadOnlyCollection<Expression> expressions)
        {
            Debug.Assert(type.IsArray);
            if (nodeType == ExpressionType.NewArrayInit)
            {
                return new NewArrayInitExpression(type, expressions);
            }
            else
            {
                return new NewArrayBoundsExpression(type, expressions);
            }
        }

Usage Example

Пример #1
0
        private static NewArrayExpression NewArrayBoundsExtracted(Type type, IEnumerable <Expression> bounds)
        {
            var boundsList = bounds.ToReadOnlyCollection();

            var dimensions = boundsList.Count;

            if (dimensions <= 0)
            {
                throw new ArgumentException("Bounds count cannot be less than 1", nameof(bounds));
            }

            for (var i = 0; i < dimensions; i++)
            {
                var expr = boundsList[i];
                ContractUtils.RequiresNotNull(expr, nameof(bounds), i);
                ExpressionUtils.RequiresCanRead(expr, nameof(bounds), i);
                if (!expr.Type.IsInteger())
                {
                    throw new ArgumentException("Argument must be of an integer type", i >= 0 ? $"{nameof(bounds)}[{i}]" : nameof(bounds));
                }
            }

            var arrayType = dimensions == 1 ? type.MakeArrayType() : type.MakeArrayType(dimensions);

            return(NewArrayExpression.Make(ExpressionType.NewArrayBounds, arrayType, boundsList));
        }
All Usage Examples Of System.Linq.Expressions.NewArrayExpression::Make