ExpressionServices Klasa
Definicja
Ważne
Niektóre informacje odnoszą się do produktu w wersji wstępnej, który może zostać znacząco zmodyfikowany przed wydaniem. Firma Microsoft nie udziela żadnych gwarancji, jawnych lub domniemanych, w odniesieniu do informacji podanych w tym miejscu.
Interfejs API transformacji służący do konwertowania wyrażeń rozpoznawania środowiska na drzewo aktywności.
public ref class ExpressionServices abstract sealed
public static class ExpressionServices
type ExpressionServices = class
Public Class ExpressionServices
- Dziedziczenie
-
ExpressionServices
Przykłady
Poniższy przykład kodu wywołuje Convert , aby obliczyć sumę elementu tablicy w indeksie 0 i element tablicy przy indeksie 1. Następnie obliczona suma jest przypisana do zmiennej i jest drukowana w konsoli programu.
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);
}
Poniższy przykład kodu jest dostępny do celów porównawczych. W drugim przykładzie pokazano, jak obliczyć sumę przez utworzenie wystąpienia Add<TLeft,TRight,TResult> działania wyrażenia. Dwa przykłady są funkcjonalnie równoważne, ale w przypadku, gdy drugie podejście obejmuje więcej kodowania i nie jest tak proste jak wywołanie Convert . W związku z tym pierwszy przykład jest zalecany.
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);
}
Uwagi
Metody konwersji w tej klasie przekształcają określone wyrażenia lambda, które mogą zawierać wiele wyrażeń podrzędnych w drzewach aktywności składających się z hierarchii działań. Zdecydowanie zaleca się używanie tych metod konwersji zamiast tworzenia wystąpień działań wyrażenia bezpośrednio, ponieważ zapewniają one wyższy poziom abstrakcji i umożliwiają bardziej intuicyjne wdrożenie przepływu pracy. Zobacz przykłady, aby uzyskać więcej informacji.
Metody konwersji w programie ExpressionServices są przeznaczone do pracy ze zmiennymi i stałymi zdefiniowanymi wewnątrz przepływu pracy lub są przekazane do przepływu pracy za pośrednictwem argumentów.
Metody
Convert<TResult>(Expression<Func<ActivityContext,TResult>>) |
Konwertuje wyrażenie obsługujące środowisko przepływu pracy na drzewo aktywności. |
ConvertReference<TResult>(Expression<Func<ActivityContext,TResult>>) |
Konwertuje odwołanie do wyrażenia obsługującego środowisko przepływu pracy w drzewie aktywności. |
TryConvert<TResult>(Expression<Func<ActivityContext,TResult>>, Activity<TResult>) |
Konwertuje wyrażenie obsługujące środowisko przepływu pracy na drzewo aktywności. |
TryConvertReference<TResult>(Expression<Func<ActivityContext,TResult>>, Activity<Location<TResult>>) |
Konwertuje odwołanie do wyrażenia obsługującego środowisko przepływu pracy w drzewie aktywności. |