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


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.cs
Исходный код:
NewExpression.cs

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

public:
 static System::Linq::Expressions::NewExpression ^ New(System::Reflection::ConstructorInfo ^ constructor);
public static System.Linq.Expressions.NewExpression New(System.Reflection.ConstructorInfo constructor);
static member New : System.Reflection.ConstructorInfo -> System.Linq.Expressions.NewExpression
Public Shared Function New (constructor As ConstructorInfo) As NewExpression

Параметры

constructor
ConstructorInfo

Значение ConstructorInfo для задания Constructor свойства равно.

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

Значение NewExpression , равное NodeType свойству New и Constructor свойству, заданному указанному значению.

Исключения

constructor равно null.

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

Комментарии

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

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

New(Type)

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

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

public:
 static System::Linq::Expressions::NewExpression ^ New(Type ^ type);
public static System.Linq.Expressions.NewExpression New(Type type);
static member New : Type -> System.Linq.Expressions.NewExpression
Public Shared Function New (type As Type) As NewExpression

Параметры

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()
' Create a NewExpression that represents constructing
' a new instance of Dictionary(Of Integer, String).
Dim newDictionaryExpression As System.Linq.Expressions.NewExpression = _
    System.Linq.Expressions.Expression.[New]( _
        Type.GetType("System.Collections.Generic.Dictionary`2[System.Int32, System.String]"))

Console.WriteLine(newDictionaryExpression.ToString())

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

Комментарии

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

Members Полученные Arguments свойства NewExpression являются пустыми коллекциями. Свойство Type равно type.

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

New(ConstructorInfo, IEnumerable<Expression>)

Исходный код:
NewExpression.cs
Исходный код:
NewExpression.cs
Исходный код:
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);
public static System.Linq.Expressions.NewExpression New(System.Reflection.ConstructorInfo constructor, System.Collections.Generic.IEnumerable<System.Linq.Expressions.Expression>? arguments);
static member New : System.Reflection.ConstructorInfo * seq<System.Linq.Expressions.Expression> -> System.Linq.Expressions.NewExpression
Public Shared Function New (constructor As ConstructorInfo, arguments As IEnumerable(Of Expression)) As NewExpression

Параметры

constructor
ConstructorInfo

Значение ConstructorInfo для задания Constructor свойства равно.

arguments
IEnumerable<Expression>

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

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

Значение NewExpression , равное свойству NodeTypeNew и ConstructorArguments свойствам, заданным указанным значениям.

Исключения

constructor равно null.

–или–

Элемент arguments is null.

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

–или–

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

Комментарии

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

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

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

New(ConstructorInfo, Expression[])

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

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

public:
 static System::Linq::Expressions::NewExpression ^ New(System::Reflection::ConstructorInfo ^ constructor, ... cli::array <System::Linq::Expressions::Expression ^> ^ arguments);
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);
static member New : System.Reflection.ConstructorInfo * System.Linq.Expressions.Expression[] -> System.Linq.Expressions.NewExpression
Public Shared Function New (constructor As ConstructorInfo, ParamArray arguments As Expression()) As NewExpression

Параметры

constructor
ConstructorInfo

Значение ConstructorInfo для задания Constructor свойства равно.

arguments
Expression[]

Массив объектов, используемых Expression для заполнения Arguments коллекции.

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

Значение NewExpression , равное свойству NodeTypeNew и ConstructorArguments свойствам, заданным указанным значениям.

Исключения

constructor равно null.

–или–

Элемент arguments is null.

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

–или–

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

Комментарии

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

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

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

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

Исходный код:
NewExpression.cs
Исходный код:
NewExpression.cs
Исходный код:
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);
[System.Diagnostics.CodeAnalysis.RequiresUnreferencedCode("The Property metadata or other accessor may be trimmed.")]
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);
static member New : System.Reflection.ConstructorInfo * seq<System.Linq.Expressions.Expression> * seq<System.Reflection.MemberInfo> -> System.Linq.Expressions.NewExpression
[<System.Diagnostics.CodeAnalysis.RequiresUnreferencedCode("The Property metadata or other accessor may be trimmed.")>]
static member New : System.Reflection.ConstructorInfo * seq<System.Linq.Expressions.Expression> * seq<System.Reflection.MemberInfo> -> System.Linq.Expressions.NewExpression
Public Shared Function New (constructor As ConstructorInfo, arguments As IEnumerable(Of Expression), members As IEnumerable(Of MemberInfo)) As NewExpression

Параметры

constructor
ConstructorInfo

Значение ConstructorInfo для задания Constructor свойства равно.

arguments
IEnumerable<Expression>

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

members
IEnumerable<MemberInfo>

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

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

ЗначениеNewExpression, равное свойству NodeTypeNew и ConstructorArgumentsMembers свойству, заданному указанным значениям.

Атрибуты

Исключения

constructor равно null.

–или–

Элемент arguments is null.

–или–

Элемент members is 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 должен быть элементом PropertyInfoFieldInfo или MethodInfo представляет элемент экземпляра в декларируемом типе конструктора, constructorпредставленном . Если он представляет свойство, свойство должно иметь get метод доступа. Соответствующий элемент для каждого элемента argumentsmembers должен иметь Type свойство, представляющее тип, который можно назначить типу элемента, представляющего members элемент.

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

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

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

Исходный код:
NewExpression.cs
Исходный код:
NewExpression.cs
Исходный код:
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, ... cli::array <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);
[System.Diagnostics.CodeAnalysis.RequiresUnreferencedCode("The Property metadata or other accessor may be trimmed.")]
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);
static member New : System.Reflection.ConstructorInfo * seq<System.Linq.Expressions.Expression> * System.Reflection.MemberInfo[] -> System.Linq.Expressions.NewExpression
[<System.Diagnostics.CodeAnalysis.RequiresUnreferencedCode("The Property metadata or other accessor may be trimmed.")>]
static member New : System.Reflection.ConstructorInfo * seq<System.Linq.Expressions.Expression> * System.Reflection.MemberInfo[] -> System.Linq.Expressions.NewExpression
Public Shared Function New (constructor As ConstructorInfo, arguments As IEnumerable(Of Expression), ParamArray members As MemberInfo()) As NewExpression

Параметры

constructor
ConstructorInfo

Значение ConstructorInfo для задания Constructor свойства равно.

arguments
IEnumerable<Expression>

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

members
MemberInfo[]

Массив объектов, используемых MemberInfo для заполнения Members коллекции.

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

ЗначениеNewExpression, равное свойству NodeTypeNew и ConstructorArgumentsMembers свойству, заданному указанным значениям.

Атрибуты

Исключения

constructor равно null.

–или–

Элемент arguments is null.

–или–

Элемент members is 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 должен быть элементом PropertyInfoFieldInfo или MethodInfo представляет элемент экземпляра в декларируемом типе конструктора, constructorпредставленном . Если он представляет свойство, свойство должно иметь возможность получить значение связанного поля. Соответствующий элемент для каждого элемента argumentsmembers должен иметь Type свойство, представляющее тип, который можно назначить типу элемента, представляющего members элемент.

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

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