Udostępnij za pośrednictwem


ExpressionServices Klasa

Definicja

Interfejs API transformacji służący do konwertowania wyrażeń rozpoznawania środowiska na drzewo aktywności.

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

Przykłady

Poniższy przykład kodu wywołuje Convert , aby obliczyć sumę elementu tablicy w indeksie 0 i element tablicy przy indeksie 1. Następnie obliczona suma jest przypisana do zmiennej i jest drukowana w konsoli programu.

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

}  

Poniższy przykład kodu jest dostępny do celów porównawczych. W drugim przykładzie pokazano, jak obliczyć sumę przez utworzenie wystąpienia Add<TLeft,TRight,TResult> działania wyrażenia. Dwa przykłady są funkcjonalnie równoważne, ale w przypadku, gdy drugie podejście obejmuje więcej kodowania i nie jest tak proste jak wywołanie Convert . W związku z tym pierwszy przykład jest zalecany.

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

}  

Uwagi

Metody konwersji w tej klasie przekształcają określone wyrażenia lambda, które mogą zawierać wiele wyrażeń podrzędnych w drzewach aktywności składających się z hierarchii działań. Zdecydowanie zaleca się używanie tych metod konwersji zamiast tworzenia wystąpień działań wyrażenia bezpośrednio, ponieważ zapewniają one wyższy poziom abstrakcji i umożliwiają bardziej intuicyjne wdrożenie przepływu pracy. Zobacz przykłady, aby uzyskać więcej informacji.

Metody konwersji w programie ExpressionServices są przeznaczone do pracy ze zmiennymi i stałymi zdefiniowanymi wewnątrz przepływu pracy lub są przekazane do przepływu pracy za pośrednictwem argumentów.

Metody

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

Konwertuje wyrażenie obsługujące środowisko przepływu pracy na drzewo aktywności.

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

Konwertuje odwołanie do wyrażenia obsługującego środowisko przepływu pracy w drzewie aktywności.

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

Konwertuje wyrażenie obsługujące środowisko przepływu pracy na drzewo aktywności.

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

Konwertuje odwołanie do wyrażenia obsługującego środowisko przepływu pracy w drzewie aktywności.

Dotyczy