Freigeben über


Eigenschaften vs. Argumente

Es gibt mehrere Möglichkeiten für die Übergabe von Daten an eine Aktivität. Neben dem Verwenden von InArgument können auch Aktivitäten entwickelt werden, um Daten entweder mit CLR-Standardeigenschaften oder öffentlichen ActivityAction-Eigenschaften zu empfangen. In diesem Thema wird erläutert, wie der richtige Methodentyp ausgewählt wird.

Verwenden von CLR-Eigenschaften

Bei der Übergabe von Daten an eine Aktivität bestehen bei CLR-Eigenschaften (d. h. öffentliche Methoden, die Get- und Set-Routinen zum Verfügbarmachen von Daten verwenden) die meisten Einschränkungen. Der Wert eines Parameters, der an eine CLR-Eigenschaft übergeben wird, muss zur Kompilierungszeit der Lösung bekannt sein. Dieser Wert ist für jede Instanz des Workflows identisch. Ein an eine CLR-Eigenschaft übergebener Wert ist also mit einer Konstante vergleichbar, die im Code definiert wird. Der Wert kann weder für die Lebensdauer der Aktivität noch für verschiedene Instanzen der Aktivität geändert werden. MethodName ist ein Beispiel für eine CLR-Eigenschaft, die von einer Aktivität verfügbar gemacht wird. Der Methodenname, den die Aktivität aufruft, kann nicht basierend auf den Laufzeitbedingungen geändert werden und ist für jede Instanz der Aktivität identisch.

Verwenden von Argumenten

Argumente sollten verwendet werden, wenn Daten nur einmal während der Lebensdauer der Aktivität ausgewertet werden. Das heißt, der Wert bleibt zwar während der Lebensdauer der Aktivität unverändert, kann aber für verschiedene Instanzen der Aktivität anders lauten. Condition ist ein Beispiel für einen Wert, der einmal ausgewertet wird und daher als Argument definiert ist. Text ist ein weiteres Beispiel für eine Methode, die als Argument definiert werden sollte, da sie nur einmal während der Ausführung der Aktivität ausgewertet wird, aber für verschiedene Instanzen der Aktivität anders lauten kann.

Verwenden von ActivityAction

Wenn Daten während der Lebensdauer der Ausführung einer Aktivität mehrmals ausgewertet werden müssen, sollte ein ActivityAction verwendet werden. Die Condition-Eigenschaft wird z. B. für jede Iteration der While-Schleife ausgewertet. Wenn zu diesem Zweck ein InArgument verwendet wird, wird die Schleife nie beendet, da das Argument nicht für jede Iteration erneut ausgewertet wird und immer das gleiche Ergebnis zurückgibt.