Condividi tramite


ExpressionServices Classe

Definizione

API di trasformazione usata per convertire espressioni in grado di supportare l'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 della matrice in corrispondenza dell'indice 1. La somma risultante viene quindi assegnata a una variabile e 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. In questo secondo esempio viene mostrato come calcolare la somma creando un'istanza dell'attività di espressione Add<TLeft,TRight,TResult>. I due esempi sono funzionalmente equivalenti ma, come è evidente, il secondo approccio richiede una maggiore attività di codifica e non è semplice come chiamare Convert. Si consiglia pertanto 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ù sottoespressioni, in strutture ad albero di attività costituite da una gerarchia di attività. Si consiglia di utilizzare questi metodi di conversione invece di creare direttamente un'istanza 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 ulteriori informazioni, vedere gli esempi.

I metodi di conversione in ExpressionServices vengono progettati per funzionare con variabili e costanti definite nel flusso di lavoro o passate nel flusso di lavoro tramite argomenti.

Metodi

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

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

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

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

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

Converte un'espressione in grado di supportare 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 in grado di supportare l'ambiente del flusso di lavoro in un albero delle attività.

Si applica a