ExpressionServices 類別

定義

用來將環境感知運算式轉換為活動樹狀結構的轉換 API。

public ref class ExpressionServices abstract sealed
public static class ExpressionServices
type ExpressionServices = class
Public Class ExpressionServices
繼承
ExpressionServices

範例

下列程式碼範例會呼叫 Convert 來計算索引 0 陣列項目和索引 1 陣列項目的總和。 之後,則會將所產生的和指派給變數,並列印至主控台。

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

}  

下列程式碼範例僅供比較。 第二個範例示範如何透過具現化 Add<TLeft,TRight,TResult> 運算式活動的方式計算總和。 以上兩個範例的功能相同,但第二個方法需要較多編碼,不像呼叫 Convert 那樣直接。 因此,建議參考第一個範例。

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

}  

備註

這個類別中的轉換方法會將指定的 Lambda 運算式 (其中可以包含多個子運算式),轉換為由活動階層組成的活動樹狀結構。 強烈建議您使用這些轉換方法,而非直接具現化運算式活動,因為前者提供層級較高的抽象概念,並讓您以更直覺的方式實作工作流程。 如需詳細資訊,請參閱範例。

ExpressionServices 中的轉換方法是設計成使用在工作流程內部定義的變數和常數,或是經由引數傳入工作流程的變數和常數。

方法

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

將工作流程環境感知運算式轉換為活動樹狀。

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

將工作流程環境感知運算式的參考轉換為活動樹狀。

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

將工作流程環境感知運算式轉換為活動樹狀。

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

將工作流程環境感知運算式的參考轉換為活動樹狀。

適用於