Expression.Convert Метод
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Создает выражение UnaryExpression, представляющее операцию преобразования типа.
Перегрузки
| Convert(Expression, Type) |
Создает выражение UnaryExpression, представляющее операцию преобразования типа. |
| Convert(Expression, Type, MethodInfo) |
Создает UnaryExpression, представляющее операцию преобразования, для которой указан метод реализации. |
Convert(Expression, Type)
- Исходный код:
- UnaryExpression.cs
- Исходный код:
- UnaryExpression.cs
- Исходный код:
- UnaryExpression.cs
Создает выражение 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.
Снятые и не поднятые
Если реализующим методом не nullявляется :
Если
expression. Тип можно назначить типу аргумента реализующего метода, а тип возвращаемого значения реализующего метода можноtypeназначить , узел не отменяется.Если один или оба из .
expressionТип илиtypeявляется типом значения, допускающим значение NULL, и соответствующие типы значений, не допускающие значения NULL, равны типу аргумента и типу возвращаемого значения реализующего метода соответственно, узел отменяется.
Если реализующим методом является null:
Если оба
expression. Тип иtypeне допускает значения NULL, узел не отменяется.В противном случае узел будет отменен.
Применяется к
Convert(Expression, Type, MethodInfo)
- Исходный код:
- UnaryExpression.cs
- Исходный код:
- UnaryExpression.cs
- Исходный код:
- UnaryExpression.cs
Создает 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имеет значение , это реализующие методы. Он должен представлять метод non-void (staticSharedв Visual Basic), который принимает один аргумент.В противном случае , если либо
expression. Тип илиtype— это определяемый пользователем тип, определяющий неявный или явный оператор преобразования, MethodInfo представляющий этот оператор, является реализующим методом.В противном случае:
Если оба
expression. Тип иtypeпредставляют числовые или логические типы, а также типы перечисления, допускающие значение NULL или не допускающие значения NULL. Реализующий метод имеет значениеnull.Если один из этих вариантов
expression: . Тип илиtypeявляется ссылочным типом и явным преобразованием, распаковкой или преобразованием ссылок изexpression. Введите вtypeзначение , реализующим методом являетсяnull.
Снятые и не поднятые
Если реализующим методом не nullявляется :
Если
expression. Тип можно назначить типу аргумента реализующего метода, а тип возвращаемого значения реализующего метода можноtypeназначить , узел не отменяется.Если один или оба из .
expressionТип илиtypeявляются типом значения, допускающим значение NULL, а соответствующие типы значений, не допускающие значения NULL, равны типу аргумента и типу возвращаемого значения реализующего метода соответственно, при этом узел отменяется.
Если реализующим методом является null:
Если оба
expression. Тип иtypeне допускает значения NULL, узел не отменяется.В противном случае узел будет отменен.