ExpressionServices Klass

Definition

Ett transformerings-API som används för att konvertera miljömedvetna uttryck till ett aktivitetsträd.

public ref class ExpressionServices abstract sealed
public static class ExpressionServices
type ExpressionServices = class
Public Class ExpressionServices
Arv
ExpressionServices

Exempel

I följande kodexempel anropas Convert för att beräkna summan av matriselementet vid index 0 och matriselementet vid index 1. Därefter tilldelas den resulterande summan till en variabel och skrivs ut till konsolen.

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

}

Följande kodexempel tillhandahålls i jämförelsesyfte. Det här andra exemplet visar hur du beräknar summan genom att instansiera uttrycksaktiviteten Add<TLeft,TRight,TResult> . De två exemplen är funktionellt likvärdiga, men som du ser innebär den andra metoden mer kodning och är inte lika enkelt som att anropa Convert. Därför rekommenderas det första exemplet.

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

}

Kommentarer

Konverteringsmetoderna i den här klassen omvandlar de angivna lambda-uttrycken, som kan innehålla flera underuttryck, till aktivitetsträd som består av en hierarki med aktiviteter. Vi rekommenderar starkt att du använder dessa konverteringsmetoder i stället för att instansiera uttrycksaktiviteter direkt eftersom de ger en högre abstraktionsnivå och gör att du kan implementera arbetsflödet mer intuitivt. Mer information finns i exemplen.

Konverteringsmetoderna i ExpressionServices är utformade för att fungera med variabler och konstanter som definieras i arbetsflödet eller skickas till arbetsflödet via argument.

Metoder

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

Konverterar ett miljömedvetent arbetsflödesuttryck till ett aktivitetsträd.

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

Konverterar en referens till ett miljömedvetent arbetsflödesuttryck till ett aktivitetsträd.

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

Konverterar ett miljömedvetent arbetsflödesuttryck till ett aktivitetsträd.

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

Konverterar en referens till ett miljömedvetent arbetsflödesuttryck till ett aktivitetsträd.

Gäller för