Idioma

ExpressionServices Classe

Definição

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 Descrição
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.

Aplica-se a