Прочитать на английском

Поделиться через


Expression.New Метод

Определение

Создает объект NewExpression.

Перегрузки

New(ConstructorInfo)

Создает NewExpression, представляющий вызов указанного конструктора без аргументов.

New(Type)

Создает NewExpression, представляющий вызов конструктора указанного типа без параметров.

New(ConstructorInfo, IEnumerable<Expression>)

Создает NewExpression, представляющий вызов указанного конструктора с указанными аргументами.

New(ConstructorInfo, Expression[])

Создает NewExpression, представляющий вызов указанного конструктора с указанными аргументами.

New(ConstructorInfo, IEnumerable<Expression>, IEnumerable<MemberInfo>)

Создает NewExpression, представляющий вызов указанного конструктора с указанными аргументами. Указаны элементы с доступом к полям, инициализированным конструктором.

New(ConstructorInfo, IEnumerable<Expression>, MemberInfo[])

Создает NewExpression, представляющий вызов указанного конструктора с указанными аргументами. Указаны элементы с доступом к полям, инициализированным в качестве массива.

New(ConstructorInfo)

Исходный код:
NewExpression.cs
Исходный код:
NewExpression.cs
Исходный код:
NewExpression.cs

Создает NewExpression, представляющий вызов указанного конструктора без аргументов.

public static System.Linq.Expressions.NewExpression New (System.Reflection.ConstructorInfo constructor);

Параметры

constructor
ConstructorInfo

Объект ConstructorInfo, который следует задать в качестве значения свойства Constructor.

Возвращаемое значение

Выражение NewExpression со свойством NodeType, равным New, и свойством Constructor, для которого задано указанное значение.

Исключения

constructor имеет значение null.

Конструктор, который представляет constructor, содержит не менее одного параметра.

Комментарии

Свойства Arguments и Members результирующего объекта NewExpression являются пустыми коллекциями. Свойство Type представляет объявляющий тип конструктора, представленный .constructor

Применяется к

.NET 9 и другие версии
Продукт Версии
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.0, 1.1, 1.2, 1.3, 1.4, 1.6, 2.0, 2.1
UWP 10.0

New(Type)

Исходный код:
NewExpression.cs
Исходный код:
NewExpression.cs
Исходный код:
NewExpression.cs

Создает NewExpression, представляющий вызов конструктора указанного типа без параметров.

public static System.Linq.Expressions.NewExpression New (Type type);

Параметры

type
Type

Type содержит конструктор без аргументов.

Возвращаемое значение

Выражение NewExpression, содержащее свойство NodeType, равное New, и свойство Constructor, для которого задано значение ConstructorInfo, представляющее конструктор указанного типа без параметров.

Исключения

type имеет значение null.

Тип, который представляет type, не содержит конструктор без параметров.

Примеры

В следующем примере показано, как использовать New(Type) метод для создания NewExpression объекта , представляющего создание нового экземпляра объекта словаря путем вызова конструктора без параметров.

// Create a NewExpression that represents constructing
// a new instance of Dictionary<int, string>.
System.Linq.Expressions.NewExpression newDictionaryExpression =
    System.Linq.Expressions.Expression.New(typeof(Dictionary<int, string>));

Console.WriteLine(newDictionaryExpression.ToString());

// This code produces the following output:
//
// new Dictionary`2()

Комментарии

Параметр type должен представлять тип, имеющий конструктор без параметров.

Свойства Arguments и Members результирующего объекта NewExpression являются пустыми коллекциями. Свойство Type равно type.

Применяется к

.NET 9 и другие версии
Продукт Версии
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.0, 1.1, 1.2, 1.3, 1.4, 1.6, 2.0, 2.1
UWP 10.0

New(ConstructorInfo, IEnumerable<Expression>)

Исходный код:
NewExpression.cs
Исходный код:
NewExpression.cs
Исходный код:
NewExpression.cs

Создает NewExpression, представляющий вызов указанного конструктора с указанными аргументами.

public static System.Linq.Expressions.NewExpression New (System.Reflection.ConstructorInfo constructor, System.Collections.Generic.IEnumerable<System.Linq.Expressions.Expression> arguments);
public static System.Linq.Expressions.NewExpression New (System.Reflection.ConstructorInfo constructor, System.Collections.Generic.IEnumerable<System.Linq.Expressions.Expression>? arguments);

Параметры

constructor
ConstructorInfo

Объект ConstructorInfo, который следует задать в качестве значения свойства Constructor.

arguments
IEnumerable<Expression>

IEnumerable<T>, содержащий все объекты Expression, используемые для заполнения коллекции Arguments.

Возвращаемое значение

Выражение NewExpression со свойствомNodeType, равным New, и свойствами Constructor и Arguments, для которых заданы указанные значения.

Исключения

constructor имеет значение null.

-или-

Элемент arguments имеет значение null.

Параметр arguments не содержит количество элементов, равное количеству параметров для конструктора, представленного constructor.

-или-

Свойство Type элемента arguments невозможно присвоить типу соответствующего конструктора, представляемого constructor.

Комментарии

Параметр arguments должен содержать то же количество элементов, что и число параметров конструктора, представленных constructor. Если arguments имеет значение null, он считается пустым, а Arguments свойство результирующего NewExpression объекта является пустой коллекцией.

Свойство Type результирующего NewExpression представляет объявляющий тип конструктора, представленный constructor. Свойство Members является пустой коллекцией.

Применяется к

.NET 9 и другие версии
Продукт Версии
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.0, 1.1, 1.2, 1.3, 1.4, 1.6, 2.0, 2.1
UWP 10.0

New(ConstructorInfo, Expression[])

Исходный код:
NewExpression.cs
Исходный код:
NewExpression.cs
Исходный код:
NewExpression.cs

Создает NewExpression, представляющий вызов указанного конструктора с указанными аргументами.

public static System.Linq.Expressions.NewExpression New (System.Reflection.ConstructorInfo constructor, params System.Linq.Expressions.Expression[] arguments);
public static System.Linq.Expressions.NewExpression New (System.Reflection.ConstructorInfo constructor, params System.Linq.Expressions.Expression[]? arguments);

Параметры

constructor
ConstructorInfo

Объект ConstructorInfo, который следует задать в качестве значения свойства Constructor.

arguments
Expression[]

Массив объектов Expression для заполнения коллекции Arguments.

Возвращаемое значение

Выражение NewExpression со свойствомNodeType, равным New, и свойствами Constructor и Arguments, для которых заданы указанные значения.

Исключения

constructor имеет значение null.

-или-

Элемент arguments имеет значение null.

Длина arguments соответствует числу параметров конструктора, представляемого constructor.

-или-

Свойство Type элемента arguments невозможно присвоить типу соответствующего конструктора, представляемого constructor.

Комментарии

Параметр arguments должен содержать то же количество элементов, что и число параметров конструктора, представленных constructor. Если arguments имеет значение null, он считается пустым, а Arguments свойство результирующего NewExpression объекта является пустой коллекцией.

Свойство Type результирующего NewExpression представляет объявляющий тип конструктора, представленный constructor. Свойство Members является пустой коллекцией.

Применяется к

.NET 9 и другие версии
Продукт Версии
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.0, 1.1, 1.2, 1.3, 1.4, 1.6, 2.0, 2.1
UWP 10.0

New(ConstructorInfo, IEnumerable<Expression>, IEnumerable<MemberInfo>)

Исходный код:
NewExpression.cs
Исходный код:
NewExpression.cs
Исходный код:
NewExpression.cs

Создает NewExpression, представляющий вызов указанного конструктора с указанными аргументами. Указаны элементы с доступом к полям, инициализированным конструктором.

public static System.Linq.Expressions.NewExpression New (System.Reflection.ConstructorInfo constructor, System.Collections.Generic.IEnumerable<System.Linq.Expressions.Expression> arguments, System.Collections.Generic.IEnumerable<System.Reflection.MemberInfo> members);
public static System.Linq.Expressions.NewExpression New (System.Reflection.ConstructorInfo constructor, System.Collections.Generic.IEnumerable<System.Linq.Expressions.Expression>? arguments, System.Collections.Generic.IEnumerable<System.Reflection.MemberInfo>? members);

Параметры

constructor
ConstructorInfo

Объект ConstructorInfo, который следует задать в качестве значения свойства Constructor.

arguments
IEnumerable<Expression>

IEnumerable<T>, содержащий все объекты Expression, используемые для заполнения коллекции Arguments.

members
IEnumerable<MemberInfo>

IEnumerable<T>, содержащий все объекты MemberInfo, используемые для заполнения коллекции Members.

Возвращаемое значение

Выражение NewExpression со свойством NodeType, равным New, и свойствами Constructor, Arguments и Members, для которых заданы указанные значения.

Исключения

constructor имеет значение null.

-или-

Элемент arguments имеет значение null.

-или-

Элемент members имеет значение null.

Параметр arguments не содержит количество элементов, равное количеству параметров для конструктора, представленного constructor.

-или-

Свойство Type элемента arguments невозможно присвоить типу соответствующего конструктора, представляемого constructor.

-или-

Параметр members не содержит то же количество элементов, что и параметр arguments.

-или-

Элемент свойства arguments содержит Type, представляющий тип, который нельзя назначить для типа элемента, представленного соответствующим элементом members.

Комментарии

Параметр arguments должен содержать то же количество элементов, что и число параметров конструктора, представленных constructor. Если arguments имеет значение null, он считается пустым, а Arguments свойство результирующего NewExpression объекта является пустой коллекцией.

Если members имеет значение null, Members свойство результирующего NewExpression объекта является пустой коллекцией. Если members значение не nullравно , оно должно иметь такое же количество элементов, как arguments и каждый элемент не должен иметь значение null. Каждый элемент members должен быть элементом PropertyInfoили MethodInfo , FieldInfo который представляет элемент экземпляра в объявляемом типе конструктора, представленного constructor. Если он представляет свойство, свойство должно иметь get метод доступа. Соответствующий arguments элемент для каждого элемента members должен иметь Type свойство , представляющее тип, который можно назначить типу элемента, представляемого элементом members .

Свойство Type результирующего NewExpression представляет объявляющий тип конструктора, который constructor представляет .

Применяется к

.NET 9 и другие версии
Продукт Версии
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.0, 1.1, 1.2, 1.3, 1.4, 1.6, 2.0, 2.1
UWP 10.0

New(ConstructorInfo, IEnumerable<Expression>, MemberInfo[])

Исходный код:
NewExpression.cs
Исходный код:
NewExpression.cs
Исходный код:
NewExpression.cs

Создает NewExpression, представляющий вызов указанного конструктора с указанными аргументами. Указаны элементы с доступом к полям, инициализированным в качестве массива.

public static System.Linq.Expressions.NewExpression New (System.Reflection.ConstructorInfo constructor, System.Collections.Generic.IEnumerable<System.Linq.Expressions.Expression> arguments, params System.Reflection.MemberInfo[] members);
public static System.Linq.Expressions.NewExpression New (System.Reflection.ConstructorInfo constructor, System.Collections.Generic.IEnumerable<System.Linq.Expressions.Expression>? arguments, params System.Reflection.MemberInfo[]? members);

Параметры

constructor
ConstructorInfo

Объект ConstructorInfo, который следует задать в качестве значения свойства Constructor.

arguments
IEnumerable<Expression>

IEnumerable<T>, содержащий все объекты Expression, используемые для заполнения коллекции Arguments.

members
MemberInfo[]

Массив объектов MemberInfo для заполнения коллекции Members.

Возвращаемое значение

Выражение NewExpression со свойством NodeType, равным New, и свойствами Constructor, Arguments и Members, для которых заданы указанные значения.

Исключения

constructor имеет значение null.

-или-

Элемент arguments имеет значение null.

-или-

Элемент members имеет значение null.

Параметр arguments не содержит количество элементов, равное количеству параметров для конструктора, представленного constructor.

-или-

Свойство Type элемента arguments невозможно присвоить типу соответствующего конструктора, представляемого constructor.

-или-

Параметр members не содержит то же количество элементов, что и параметр arguments.

-или-

Элемент свойства arguments содержит Type, представляющий тип, который нельзя назначить для типа элемента, представленного соответствующим элементом members.

Комментарии

Параметр arguments должен содержать то же количество элементов, что и число параметров конструктора, представленных constructor. Если arguments имеет значение null, он считается пустым, а Arguments свойство результирующего NewExpression объекта является пустой коллекцией.

Если members имеет значение null, Members свойство результирующего NewExpression объекта является пустой коллекцией. Если members значение не nullравно , оно должно иметь такое же количество элементов, как arguments и каждый элемент не должен иметь значение null. Каждый элемент members должен быть элементом PropertyInfoили MethodInfo , FieldInfo который представляет элемент экземпляра в объявляемом типе конструктора, представленного constructor. Если он представляет свойство, свойство должно иметь возможность получить значение связанного поля. Соответствующий arguments элемент для каждого элемента members должен иметь Type свойство , представляющее тип, который можно назначить типу элемента, представляемого элементом members .

Свойство Type результирующего NewExpression представляет объявляющий тип конструктора, который constructor представляет .

Применяется к

.NET 9 и другие версии
Продукт Версии
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.0, 1.1, 1.2, 1.3, 1.4, 1.6, 2.0, 2.1
UWP 10.0