다음을 통해 공유


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

}  

설명

이 클래스의 변환 메서드는 여러 하위 식을 포함할 수 있는 지정한 람다 식을 작업 계층 구조로 구성된 작업 트리로 변환합니다. 이러한 변환 메서드는 상위 수준의 추상을 제공하고 보다 직관적으로 워크플로를 구현할 수 있도록 하므로 식 활동을 직접 인스턴스화하는 대신 변환 메서드를 사용하는 것이 좋습니다. 자세한 내용은 예제를 참조하십시오.

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

워크플로 환경 인식 식에 대한 참조를 활동 트리로 변환합니다.

적용 대상