ExpressionServices Klasse
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
Eine Transformations-API zum Konvertieren von Umgebungsausdrücken in eine Aktivitätsstruktur.
public ref class ExpressionServices abstract sealed
public static class ExpressionServices
type ExpressionServices = class
Public Class ExpressionServices
- Vererbung
-
ExpressionServices
Beispiele
Im folgenden Codebeispiel wird Convert die Summe des Arrayelements bei Index 0 und das Arrayelement bei Index 1 berechnet. Als Nächstes wird die resultierende Summe einer Variablen zugewiesen und in die Konsole gedruckt.
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);
}
Das folgende Codebeispiel wird zu Vergleichszwecken bereitgestellt. In diesem zweiten Beispiel wird gezeigt, wie die Summe durch Instanziieren der Add<TLeft,TRight,TResult> Ausdrucksaktivität berechnet wird. Die beiden Beispiele sind funktional gleichwertig, aber wie Sie sehen können, umfasst der zweite Ansatz mehr Codierung und ist nicht so einfach wie das Aufrufen Convert. Daher wird das erste Beispiel empfohlen.
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);
}
Hinweise
Die Konvertierungsmethoden in dieser Klasse transformieren die angegebenen Lambda-Ausdrücke, die mehrere Unterausdrücke enthalten können, in Aktivitätsstrukturen, die aus einer Hierarchie von Aktivitäten bestehen. Es wird dringend empfohlen, diese Konvertierungsmethoden zu verwenden, anstatt Ausdrucksaktivitäten direkt zu instanziieren, da sie eine höhere Abstraktionsebene bieten und Es Ihnen ermöglichen, Ihren Workflow intuitiver zu implementieren. Weitere Informationen finden Sie in den Beispielen.
Die Konvertierungsmethoden ExpressionServices in sind so konzipiert, dass Sie mit Variablen und Konstanten arbeiten, die innerhalb des Workflows definiert sind oder über Argumente an den Workflow übergeben werden.
Methoden
| Name | Beschreibung |
|---|---|
| Convert<TResult>(Expression<Func<ActivityContext,TResult>>) |
Konvertiert einen Workflowumgebungsausdruck in eine Aktivitätsstruktur. |
| ConvertReference<TResult>(Expression<Func<ActivityContext,TResult>>) |
Konvertiert einen Verweis auf einen Workflowumgebungsausdruck in eine Aktivitätsstruktur. |
| TryConvert<TResult>(Expression<Func<ActivityContext,TResult>>, Activity<TResult>) |
Konvertiert einen Workflowumgebungsausdruck in eine Aktivitätsstruktur. |
| TryConvertReference<TResult>(Expression<Func<ActivityContext,TResult>>, Activity<Location<TResult>>) |
Konvertiert einen Verweis auf einen Workflowumgebungsausdruck in eine Aktivitätsstruktur. |