Expression.Convert Метод
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Создает выражение UnaryExpression, представляющее операцию преобразования типа.
Перегрузки
Convert(Expression, Type) |
Создает выражение UnaryExpression, представляющее операцию преобразования типа. |
Convert(Expression, Type, MethodInfo) |
Создает UnaryExpression, представляющее операцию преобразования, для которой указан метод реализации. |
Convert(Expression, Type)
Создает выражение UnaryExpression, представляющее операцию преобразования типа.
public:
static System::Linq::Expressions::UnaryExpression ^ Convert(System::Linq::Expressions::Expression ^ expression, Type ^ type);
public static System.Linq.Expressions.UnaryExpression Convert (System.Linq.Expressions.Expression expression, Type type);
static member Convert : System.Linq.Expressions.Expression * Type -> System.Linq.Expressions.UnaryExpression
Public Shared Function Convert (expression As Expression, type As Type) As UnaryExpression
Параметры
- expression
- Expression
Объект Expression, который следует задать в качестве значения свойства Operand.
Возвращаемое значение
Выражение UnaryExpression со свойствомNodeType, равным Convert, и свойствами Operand и Type, для которых заданы указанные значения.
Исключения
Параметр expression
или type
имеет значение null
.
Оператор преобразования не определен для типов expression
.Type и type
.Type.
Примеры
В следующем примере кода показано, как создать выражение, представляющее операцию преобразования типа.
// Add the following directive to your file:
// using System.Linq.Expressions;
// This expression represents a type conversion operation.
Expression convertExpr = Expression.Convert(
Expression.Constant(5.5),
typeof(Int16)
);
// Print out the expression.
Console.WriteLine(convertExpr.ToString());
// The following statement first creates an expression tree,
// then compiles it, and then executes it.
Console.WriteLine(Expression.Lambda<Func<Int16>>(convertExpr).Compile()());
// This code example produces the following output:
//
// Convert(5.5)
// 5
' Add the following directive to your file:
' Imports System.Linq.Expressions
' This expression represents a type conversion operation.
Dim convertExpr As Expression = Expression.Convert(
Expression.Constant(5.5),
GetType(Int16)
)
' Print the expression.
Console.WriteLine(convertExpr.ToString())
' The following statement first creates an expression tree,
' then compiles it, and then executes it.
Console.WriteLine(Expression.Lambda(Of Func(Of Int16))(convertExpr).Compile()())
' This code example produces the following output:
'
' Convert(5.5)
' 5
Комментарии
Свойству Method результирующего UnaryExpression объекта присваивается метод реализации. Значение свойства IsLiftedToNull — false
. Если узел снят, IsLifted имеет значение true
. В противном случае значение равно false
.
Реализация метода
Следующие правила определяют метод реализации для операции:
Если одно из этих вариантов
expression
. Тип илиtype
является определяемым пользователем типом, определяющим неявный или явный оператор преобразования, MethodInfo который представляет этот оператор является методом реализации.В противном случае:
Если оба
expression
. Тип иtype
представляет числовые или логические типы, типы перечисления, допускающие значение NULL или не допускающие значения NULL, — этоnull
метод реализации.Если одно из этих вариантов
expression
. Тип илиtype
является ссылочным типом и явным прямоугольником, распаковкой или преобразованием ссылок.expression
Тип вtype
, реализующим методом являетсяnull
.
Lifted и non-Lifted
Если метод реализации не null
имеет значение :
If
expression
. Тип присваивается типу аргумента реализующего метода, а возвращаемый тип реализующего метода можноtype
назначить, узел не поднимается.Если один или оба из
expression
них. Тип илиtype
является типом значения, допускающим значение NULL, и соответствующие типы значений, не допускающие значения NULL, равны типу аргумента и типу возвращаемого значения метода реализации соответственно, узел поднимается.
Если реализуется null
метод:
Если оба
expression
. Тип иtype
не допускает значения NULL, узел не поднимается.В противном случае узел будет снят.
Применяется к
Convert(Expression, Type, MethodInfo)
Создает UnaryExpression, представляющее операцию преобразования, для которой указан метод реализации.
public:
static System::Linq::Expressions::UnaryExpression ^ Convert(System::Linq::Expressions::Expression ^ expression, Type ^ type, System::Reflection::MethodInfo ^ method);
public static System.Linq.Expressions.UnaryExpression Convert (System.Linq.Expressions.Expression expression, Type type, System.Reflection.MethodInfo method);
public static System.Linq.Expressions.UnaryExpression Convert (System.Linq.Expressions.Expression expression, Type type, System.Reflection.MethodInfo? method);
static member Convert : System.Linq.Expressions.Expression * Type * System.Reflection.MethodInfo -> System.Linq.Expressions.UnaryExpression
Public Shared Function Convert (expression As Expression, type As Type, method As MethodInfo) As UnaryExpression
Параметры
- expression
- Expression
Объект Expression, который следует задать в качестве значения свойства Operand.
- method
- MethodInfo
Объект MethodInfo, который следует задать в качестве значения свойства Method.
Возвращаемое значение
Выражение UnaryExpression со свойством NodeType, равным Convert, и свойствами Operand, Type и Method, для которых заданы указанные значения.
Исключения
Параметр expression
или type
имеет значение null
.
Значение параметра method
не равно null
, и метод, который представляется этим параметром, возвращает значение void
, не является static
(Shared
в Visual Basic) и не принимает ровно один аргумент.
Оператор преобразования не определен для типов expression
.Type и type
.Type.
-или-
Параметр expression
.Type не назначается типу аргумента метода, представленному параметром method
.
-или-
Тип возврата метода, представленный method
, не назначается для type
.
-или-
Тип expression
.Type или type
поддерживает тип значения, а соответствующий тип, не поддерживающий значение null, не равен типу аргумента и типу возврата, соответственно метода, представленного method
.
Найдено более одного метода, соответствующего описанию method
.
Комментарии
Свойству Method результирующего UnaryExpression объекта присваивается метод реализации. Значение свойства IsLiftedToNull — false
. Если узел снят, IsLifted имеет значение true
. В противном случае значение равно false
.
Реализация метода
Следующие правила определяют метод реализации для операции:
Если метод не
null
является, это метод реализации. Он должен представлять непустыйstatic
метод (Shared
в Visual Basic), который принимает один аргумент.В противном случае, если одно из этих
expression
вариантов. Тип илиtype
является определяемым пользователем типом, определяющим неявный или явный оператор преобразования, MethodInfo который представляет этот оператор является методом реализации.В противном случае:
Если оба
expression
. Тип иtype
представляет числовые или логические типы, типы перечисления, допускающие значение NULL или не допускающие значения NULL, — этоnull
метод реализации.Если одно из этих вариантов
expression
. Тип илиtype
является ссылочным типом и явным прямоугольником, распаковкой или преобразованием ссылок.expression
Тип вtype
, реализующим методом являетсяnull
.
Lifted и non-Lifted
Если метод реализации не null
имеет значение :
If
expression
. Тип присваивается типу аргумента реализующего метода, а возвращаемый тип реализующего метода можноtype
назначить, узел не поднимается.Если одно или и то или и другое .
expression
Тип илиtype
тип значения, допускающий значение NULL, и соответствующие типы значений, не допускающие значения NULL, равны типу аргумента и типу возвращаемого значения метода реализации соответственно, то узел поднимается.
Если реализуется null
метод:
Если оба
expression
. Тип иtype
не допускает значения NULL, узел не поднимается.В противном случае узел будет снят.