ExpressionServices Classe
Definizione
Importante
Alcune informazioni sono relative alla release non definitiva del prodotto, che potrebbe subire modifiche significative prima della release definitiva. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
API di trasformazione usata per convertire espressioni con riconoscimento dell'ambiente in un albero delle attività.
public ref class ExpressionServices abstract sealed
public static class ExpressionServices
type ExpressionServices = class
Public Class ExpressionServices
- Ereditarietà
-
ExpressionServices
Esempio
Nell'esempio di codice seguente viene chiamato Convert per calcolare la somma dell'elemento della matrice in corrispondenza dell'indice 0 e dell'elemento matrice in corrispondenza dell'indice 1. Successivamente, la somma risultante viene assegnata a una variabile e viene stampata nella console.
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);
}
L'esempio di codice seguente viene fornito a scopo di confronto. Questo secondo esempio illustra come calcolare la somma creando un'istanza dell'attività dell'espressione Add<TLeft,TRight,TResult> . I due esempi sono equivalenti dal punto di vista funzionale, ma come si può vedere il secondo approccio comporta una maggiore codifica e non è così semplice come chiamare Convert. È quindi consigliabile il primo esempio.
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);
}
Commenti
I metodi di conversione in questa classe trasformano le espressioni lambda specificate, che possono contenere più espressioni secondarie, in alberi delle attività composti da una gerarchia di attività. È consigliabile usare questi metodi di conversione anziché creare un'istanza diretta delle attività di espressione perché forniscono un livello più elevato di astrazione e consentono di implementare il flusso di lavoro in modo più intuitivo. Per altre informazioni, vedere gli esempi.
I metodi di conversione in ExpressionServices sono progettati per lavorare con variabili e costanti definite all'interno del flusso di lavoro o passate al flusso di lavoro tramite argomenti.
Metodi
| Nome | Descrizione |
|---|---|
| Convert<TResult>(Expression<Func<ActivityContext,TResult>>) |
Converte un'espressione compatibile con l'ambiente del flusso di lavoro in un albero delle attività. |
| ConvertReference<TResult>(Expression<Func<ActivityContext,TResult>>) |
Converte un riferimento a un'espressione compatibile con l'ambiente del flusso di lavoro in un albero delle attività. |
| TryConvert<TResult>(Expression<Func<ActivityContext,TResult>>, Activity<TResult>) |
Converte un'espressione compatibile con l'ambiente del flusso di lavoro in un albero delle attività. |
| TryConvertReference<TResult>(Expression<Func<ActivityContext,TResult>>, Activity<Location<TResult>>) |
Converte un riferimento a un'espressione compatibile con l'ambiente del flusso di lavoro in un albero delle attività. |