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 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.

Aplica-se a