ExpressionServices Klas

Definitie

Een transformatie-API die wordt gebruikt om omgevingsbewuste expressies te converteren naar een activiteitsstructuur.

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

Voorbeelden

In het volgende codevoorbeeld Convert wordt de som van het matrixelement bij index 0 en het matrixelement bij index 1 berekend. Vervolgens wordt de resulterende som toegewezen aan een variabele en wordt deze afgedrukt op de 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);

}

Het volgende codevoorbeeld is beschikbaar voor vergelijkingsdoeleinden. In dit tweede voorbeeld ziet u hoe u de som kunt berekenen door de Add<TLeft,TRight,TResult> expressieactiviteit te instantiëren. De twee voorbeelden zijn functioneel gelijkwaardig, maar omdat u kunt zien dat de tweede benadering meer codering omvat en niet zo eenvoudig is als aanroepen Convert. Daarom wordt het eerste voorbeeld aanbevolen.

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

}

Opmerkingen

De conversiemethoden in deze klasse transformeren de opgegeven lambda-expressies, die meerdere subexpressies kunnen bevatten, in activiteitsstructuren die bestaan uit een hiërarchie van activiteiten. Het wordt sterk aanbevolen om deze conversiemethoden te gebruiken in plaats van direct expressieactiviteiten te instantiëren, omdat ze een hoger abstractieniveau bieden en u in staat stellen uw werkstroom intuïtiever te implementeren. Zie de voorbeelden voor meer informatie.

De conversiemethoden in ExpressionServices zijn ontworpen om te werken met variabelen en constanten die in de werkstroom zijn gedefinieerd of die via argumenten in de werkstroom worden doorgegeven.

Methoden

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

Converteert een omgevingsbewuste werkstroomexpressie naar een activiteitsstructuur.

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

Converteert een verwijzing naar een omgevingsbewuste expressie van een werkstroom naar een activiteitsstructuur.

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

Converteert een omgevingsbewuste werkstroomexpressie naar een activiteitsstructuur.

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

Converteert een verwijzing naar een omgevingsbewuste expressie van een werkstroom naar een activiteitsstructuur.

Van toepassing op