ExpressionServices Classe

Définition

API de transformation utilisée pour convertir des expressions prenant en charge l’environnement en arborescence d’activités.

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. Ensuite, la somme résultante est affectée à une variable et est imprimée dans 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é Add<TLeft,TRight,TResult> d’expression. Les 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 l’appel 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 au lieu d’instancier directement les activités d’expression, car elles fournissent un niveau d’abstraction plus élevé et vous permettent d’implémenter votre workflow de manière plus intuitive. Pour plus d’informations, consultez les exemples.

Les méthodes de conversion dans ExpressionServices lesquelles elles sont conçues pour fonctionner avec des variables et des constantes définies à l’intérieur du flux de travail, ou transmises au flux de travail via des arguments.

Méthodes

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

Convertit une expression prenant en charge l’environnement de flux de travail en arborescence d’activités.

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

Convertit une référence en expression prenant en charge l’environnement de flux de travail en arborescence d’activités.

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

Convertit une expression prenant en charge l’environnement de flux de travail en arborescence d’activités.

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

Convertit une référence en expression prenant en charge l’environnement de flux de travail en arborescence d’activités.

S’applique à