Partilhar via


ExpressionServices Classe

Definição

Uma API de transformação usada para converter expressões com reconhecimento de ambiente em uma á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 a seguir chama Convert para calcular a soma do elemento de matriz no índice 0 e o elemento de matriz no índice 1. Em seguida, a soma resultante é atribuída a uma variável e é impressa no console.

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 exemplo de código a seguir é fornecido para fins de comparação. Este segundo exemplo mostra como calcular a soma instanciando a atividade de Add<TLeft,TRight,TResult> expressão. Os dois exemplos são funcionalmente equivalentes, mas como você pode ver, a segunda abordagem envolve mais codificação e não é tão simples quanto chamar Convert . Portanto, o primeiro exemplo é recomendado.

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);  

}  

Comentários

Os métodos de conversão nessa classe transformam as expressões lambda especificadas, que podem conter várias subexpressãos, em árvores de atividades compostas de uma hierarquia de atividades. É altamente recomendável usar esses métodos de conversão em vez de instanciar as atividades de expressão diretamente, pois elas fornecem um nível mais alto de abstração e permitem que você implemente seu fluxo de trabalho de forma mais intuitiva. Consulte os exemplos para obter mais informações.

Os métodos de conversão no ExpressionServices são projetados para trabalhar com variáveis e constantes definidas dentro do fluxo de trabalho ou passados para o fluxo de trabalho por meio de argumentos.

Métodos

Convert<TResult>(Expression<Func<ActivityContext,TResult>>)

Converte uma expressão com reconhecimento de ambiente de fluxo de trabalho em uma árvore de atividades.

ConvertReference<TResult>(Expression<Func<ActivityContext,TResult>>)

Converte uma referência a uma expressão com reconhecimento de ambiente de fluxo de trabalho em uma árvore de atividades.

TryConvert<TResult>(Expression<Func<ActivityContext,TResult>>, Activity<TResult>)

Converte uma expressão com reconhecimento de ambiente de fluxo de trabalho em uma árvore de atividades.

TryConvertReference<TResult>(Expression<Func<ActivityContext,TResult>>, Activity<Location<TResult>>)

Converte uma referência a uma expressão com reconhecimento de ambiente de fluxo de trabalho em uma árvore de atividades.

Aplica-se a