ExpressionServices Clase

Definición

Interfaz API de transformación utilizada para convertir expresiones que tienen en cuenta el entorno en un árbol de actividad.

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

Ejemplos

El siguiente ejemplo de código llama al método Convert para calcular la suma del elemento de matriz en el índice 0 y el elemento de matriz en el índice 1. A continuación, la suma resultante está asignada a una variable y se imprime en la consola.

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

}  

El siguiente ejemplo de código se proporciona con fines de comparación. Este segundo ejemplo muestra cómo calcular la suma creando una instancia de la actividad de expresión Add<TLeft,TRight,TResult>. Los dos ejemplos son funcionalmente equivalentes pero, como se puede ver, el segundo enfoque requiere más codificación y no es tan directo como llamar al método Convert. Por lo tanto, se recomienda el primer ejemplo.

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

}  

Comentarios

Los métodos de conversión de esta clase transforman las expresiones lambda especificadas, que pueden contener varias subexpresiones, en árboles de actividad compuestos de una jerarquía de actividades. Es muy recomendable utilizar estos métodos de conversión en lugar de crear instancias de las actividades de expresión directamente porque proporcionan un nivel más alto de abstracción y permiten implementar el flujo de trabajo de manera más intuitiva. Para obtener más información, vea los ejemplos.

Los métodos de conversión en ExpressionServices están diseñados para trabajar con variables y constantes definidas dentro del flujo de trabajo o que se pasan en el flujo de trabajo a través de los argumentos.

Métodos

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

Convierte en un árbol de actividad una expresión de flujo de trabajo que tiene en cuenta el entorno.

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

Convierte en un árbol de actividad una referencia a una expresión de flujo de trabajo que tiene en cuenta el entorno.

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

Convierte en un árbol de actividad una expresión de flujo de trabajo que tiene en cuenta el entorno.

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

Convierte en un árbol de actividad una referencia a una expresión de flujo de trabajo que tiene en cuenta el entorno.

Se aplica a