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