Partager via


ExpressionServices Classe

Définition

API de transformation utilisée pour convertir les expressions sensibles à l’environnement en arborescence d’activité.

public ref class ExpressionServices abstract sealed
public static class ExpressionServices
type ExpressionServices = class
Public Class ExpressionServices
Héritage
ExpressionServices

Exemples

L'exemple de code suivant appelle Convert pour calculer la somme de l'élément de tableau à l'index 0 et l'élément de tableau à l'index 1. La somme résultante est ensuite affectée à une variable et est imprimée sur la 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'exemple de code suivant est fourni à des fins de comparaison. Ce deuxième exemple montre comment calculer la somme en instanciant l'activité d'expression Add<TLeft,TRight,TResult>. Ces deux exemples sont fonctionnellement équivalents, mais comme vous pouvez le voir, la deuxième approche implique davantage de codage et n'est pas aussi simple que d'appeler Convert. Par conséquent, le premier exemple est recommandé.

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

}  

Remarques

Les méthodes de conversion de cette classe transforment les expressions lambda spécifiées, qui peuvent contenir plusieurs sous-expressions, en arborescences d'activités composées d'une hiérarchie d'activités. Il est fortement recommandé d'utiliser ces méthodes de conversion plutôt que d'instancier directement des activités d'expression car elles offrent un niveau supérieur d'abstraction et vous permettent d'implémenter votre flux de travail plus intuitivement. Pour plus d'informations, reportez-vous aux exemples.

Les méthodes de conversion de ExpressionServices sont conçues pour utiliser les variables et les constantes qui sont définies dans le flux de travail ou passées dans ce dernier via des arguments.

Méthodes

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

Convertit un flux de travail sensible à l’environnement de flux de travail en arborescence d’activité.

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

Convertit une référence à une expression sensible à l’environnement de flux de travail en arborescence d’activité.

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

Convertit un flux de travail sensible à l’environnement de flux de travail en arborescence d’activité.

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

Convertit une référence à une expression sensible à l’environnement de flux de travail en arborescence d’activité.

S’applique à