ExpressionServices Classe

Definizione

API di trasformazione usata per convertire espressioni con riconoscimento dell'ambiente in un albero delle attività.

public ref class ExpressionServices abstract sealed
public static class ExpressionServices
type ExpressionServices = class
Public Class ExpressionServices
Ereditarietà
ExpressionServices

Esempio

Nell'esempio di codice seguente viene chiamato Convert per calcolare la somma dell'elemento della matrice in corrispondenza dell'indice 0 e dell'elemento matrice in corrispondenza dell'indice 1. Successivamente, la somma risultante viene assegnata a una variabile e viene stampata nella 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);

}

L'esempio di codice seguente viene fornito a scopo di confronto. Questo secondo esempio illustra come calcolare la somma creando un'istanza dell'attività dell'espressione Add<TLeft,TRight,TResult> . I due esempi sono equivalenti dal punto di vista funzionale, ma come si può vedere il secondo approccio comporta una maggiore codifica e non è così semplice come chiamare Convert. È quindi consigliabile il primo esempio.

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

}

Commenti

I metodi di conversione in questa classe trasformano le espressioni lambda specificate, che possono contenere più espressioni secondarie, in alberi delle attività composti da una gerarchia di attività. È consigliabile usare questi metodi di conversione anziché creare un'istanza diretta delle attività di espressione perché forniscono un livello più elevato di astrazione e consentono di implementare il flusso di lavoro in modo più intuitivo. Per altre informazioni, vedere gli esempi.

I metodi di conversione in ExpressionServices sono progettati per lavorare con variabili e costanti definite all'interno del flusso di lavoro o passate al flusso di lavoro tramite argomenti.

Metodi

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

Converte un'espressione compatibile con l'ambiente del flusso di lavoro in un albero delle attività.

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

Converte un riferimento a un'espressione compatibile con l'ambiente del flusso di lavoro in un albero delle attività.

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

Converte un'espressione compatibile con l'ambiente del flusso di lavoro in un albero delle attività.

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

Converte un riferimento a un'espressione compatibile con l'ambiente del flusso di lavoro in un albero delle attività.

Si applica a