ExpressionServices Klasse

Definition

Eine Transformations-API, die verwendet wird, um umgebungsfähige Ausdrücke in eine Aktivitätsstruktur zu konvertieren.

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

Beispiele

Im folgenden Codebeispiel wird das Convert-Element aufgerufen, um die Summe aus dem Arrayelement bei Index 0 und dem Arrayelement bei Index 1 zu berechnen. Dann wird die sich daraus ergebende Summe einer Variablen zugewiesen und auf der Konsole ausgegeben.

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

}  

Das folgende Codebeispiel wird zu Vergleichszwecken bereitgestellt. In diesem zweiten Beispiel wird gezeigt, wie die Summe berechnet wird, indem die Add<TLeft,TRight,TResult>-Ausdrucksaktivität instanziiert wird. Die Funktionsweise der zwei Beispiele ist gleich. Wie jedoch zu erkennen ist, fällt für den zweiten Ansatz mehr Codierungsaufwand an, und es ist einfacher, das Convert-Element aufzurufen. Daher wird das erste Beispiel empfohlen.

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

}  

Hinweise

Die Konvertierungsmethoden in dieser Klasse transformation die angegebenen Lambda-Ausdrücke, die mehrere Teilausdrücke enthalten können, in Aktivitätsstrukturen, die aus einer Hierarchie von Aktivitäten bestehen. Es wird dringend empfohlen, die Ausdrucksaktivitäten nicht direkt zu instanziieren, sondern diese Konvertierungsmethoden zu verwenden, da sie eine höhere Abstraktionsebene bereitstellen und es Ihnen ermöglichen, den Workflow intuitiver zu implementieren. Weitere Informationen finden Sie in den Beispielen.

Die Konvertierungsmethoden in ExpressionServices dienen zum Arbeiten mit Variablen und Konstanten, die im Workflow definiert sind oder die mittels Argumenten an den Workflow übergeben werden.

Methoden

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

Konvertiert einen workflowumgebungsfähigen Ausdruck in eine Aktivitätsstruktur.

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

Konvertiert einen Verweis auf einen workflowumgebungsfähigen Ausdruck in eine Aktivitätsstruktur.

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

Konvertiert einen workflowumgebungsfähigen Ausdruck in eine Aktivitätsstruktur.

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

Konvertiert einen Verweis auf einen workflowumgebungsfähigen Ausdruck in eine Aktivitätsstruktur.

Gilt für