ExpressionServices Sınıf

Tanım

Ortam kullanan ifadeleri etkinlik ağacına dönüştürmek için kullanılan dönüştürme API'si.

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

Örnekler

Aşağıdaki kod örneği, dizin 0'daki dizi öğesinin toplamını ve dizin 1'deki dizi öğesini hesaplamak için çağrı yapar Convert . Ardından, sonuçta elde edilen toplam bir değişkene atanır ve konsola yazdırılır.

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

}  

Karşılaştırma amacıyla aşağıdaki kod örneği verilmiştir. Bu ikinci örnek, ifade etkinliğinin örneğini ekleyerek toplamın Add<TLeft,TRight,TResult> nasıl hesaplanmasını gösterir. İki örnek işlevsel olarak eşdeğerdir, ancak gördüğünüz gibi ikinci yaklaşım daha fazla kodlama içerir ve çağrısı Convertkadar kolay değildir. Bu nedenle ilk örnek önerilir.

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

}  

Açıklamalar

Bu sınıftaki dönüştürme yöntemleri, birden çok alt ifade içerebilen belirtilen lambda ifadelerini bir etkinlik hiyerarşisi oluşturan etkinlik ağaçlarına dönüştürür. İfade etkinliklerinin örneğini doğrudan oluşturmak yerine bu dönüştürme yöntemlerini kullanmanız kesinlikle önerilir çünkü bunlar daha yüksek bir soyutlama düzeyi sağlar ve iş akışınızı daha sezgisel bir şekilde uygulamanıza olanak tanır. Daha fazla bilgi için örneklere bakın.

içindeki ExpressionServices dönüştürme yöntemleri, iş akışı içinde tanımlanan değişkenler ve sabitlerle çalışacak şekilde tasarlanmıştır veya bağımsız değişkenler aracılığıyla iş akışına geçirilir.

Yöntemler

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

İş akışı ortamı kullanan bir ifadeyi etkinlik ağacına dönüştürür.

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

İş akışı ortamı kullanan ifade başvurularını etkinlik ağacına dönüştürür.

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

İş akışı ortamı kullanan bir ifadeyi etkinlik ağacına dönüştürür.

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

İş akışı ortamı kullanan ifade başvurularını etkinlik ağacına dönüştürür.

Şunlara uygulanır