ExpressionServices Classe
Definição
Importante
Algumas informações dizem respeito a um produto pré-lançado que pode ser substancialmente modificado antes de ser lançado. A Microsoft não faz garantias, de forma expressa ou implícita, em relação à informação aqui apresentada.
Uma API de transformação usada para converter expressões conscientes do ambiente numa árvore de atividades.
public ref class ExpressionServices abstract sealed
public static class ExpressionServices
type ExpressionServices = class
Public Class ExpressionServices
- Herança
-
ExpressionServices
Exemplos
O exemplo de código seguinte chama Convert para calcular a soma do elemento do array no índice 0 e do elemento do array no índice 1. De seguida, a soma resultante é atribuída a uma variável e é impressa na consola.
public static void ComputeSumWithConvert()
{
var arrayvar = new Variable<int[]>("arrayvar", new int[] { 1, 2 });
var intvar = new Variable<int>("intvar");
// Use ExpressionServices.Convert() to convert the composite lambda expression
// that represents the sum of array elements at index 0 and 1.
Activity<int> activity1 = ExpressionServices.Convert<int>(ctx => arrayvar.Get(ctx)[0] + arrayvar.Get(ctx)[1]);
Activity seq = new Sequence
{
Variables = { arrayvar, intvar },
Activities =
{
// Get the sum value.
new Assign<int>
{
To = intvar,
Value = activity1,
},
// Print the sum value of 3 to the console.
new WriteLine
{
Text = new InArgument<string>(ctx => intvar.Get(ctx).ToString()),
},
}
};
WorkflowInvoker.Invoke(seq);
}
O seguinte exemplo de código é fornecido para fins de comparação. Este segundo exemplo mostra como calcular a soma instanciando a Add<TLeft,TRight,TResult> atividade de expressão. Os dois exemplos são funcionalmente equivalentes, mas como pode ver, a segunda abordagem envolve mais programação e não é tão simples como chamar Convert. Por isso, recomenda-se o primeiro exemplo.
public static void ComputeSumWithExpressionActivity()
{
var arrayvar = new Variable<int[]>("arrayvar", new int[] { 1, 2 });
var intvar = new Variable<int>("intvar");
// Create an Add activity to compute the sum of array elements at index 0 and 1.
Activity<int> activity1 = new Add<int, int, int>
{
Left = new ArrayItemValue<int>
{
Array = arrayvar,
Index = 0,
},
Right = new ArrayItemValue<int>
{
Array = arrayvar,
Index = 1,
}
};
Activity seq = new Sequence
{
Variables = { arrayvar, intvar },
Activities =
{
// Get the sum value.
new Assign<int>
{
To = intvar,
Value = activity1,
},
// Print the sum value of 3 to the console.
new WriteLine
{
Text = new InArgument<string>(ctx => intvar.Get(ctx).ToString()),
},
}
};
WorkflowInvoker.Invoke(seq);
}
Observações
Os métodos de conversão nesta classe transformam as expressões lambda especificadas, que podem conter múltiplas subexpressões, em árvores de atividades compostas por uma hierarquia de atividades. É fortemente recomendado usar estes métodos de conversão em vez de instanciar diretamente as atividades de expressão, pois proporcionam um nível mais elevado de abstração e permitem implementar o seu fluxo de trabalho de forma mais intuitiva. Consulte os exemplos para obter mais informações.
Os métodos de conversão são ExpressionServices concebidos para trabalhar com variáveis e constantes definidas dentro do fluxo de trabalho, ou transmitidas ao fluxo de trabalho através de argumentos.
Métodos
| Name | Description |
|---|---|
| Convert<TResult>(Expression<Func<ActivityContext,TResult>>) |
Converte uma expressão consciente do ambiente do fluxo de trabalho numa árvore de atividades. |
| ConvertReference<TResult>(Expression<Func<ActivityContext,TResult>>) |
Converte uma referência a uma expressão consciente do ambiente de fluxo de trabalho numa árvore de atividades. |
| TryConvert<TResult>(Expression<Func<ActivityContext,TResult>>, Activity<TResult>) |
Converte uma expressão consciente do ambiente do fluxo de trabalho numa árvore de atividades. |
| TryConvertReference<TResult>(Expression<Func<ActivityContext,TResult>>, Activity<Location<TResult>>) |
Converte uma referência a uma expressão consciente do ambiente de fluxo de trabalho numa árvore de atividades. |