Auflistungsaktivitäten in WF
Dieses Thema gilt für Windows Workflow Foundation 4.
Auflistungsaktivitäten werden für die Arbeit mit Auflistungsobjekten in einem Workflow verwendet. .NET Framework, Version 4 verfügt über vom System bereitgestellte Aktivitäten, mit denen Elemente zu einer Auflistung hinzugefügt oder daraus entfernt werden können und mit denen überprüft werden kann, ob ein Element in einer Auflistung vorhanden ist. Außerdem können Auflistungen bereinigt werden. Alle Auflistungsaktivitäten sind generische Klassen, die von CodeActivity oder CodeActivity erben. ExistsInCollection und RemoveFromCollection verfügen über ein OutArgument-Objekt des Typs Boolean, das das Ergebnis angibt.
Hinweis: |
---|
Wenn eine Auflistungsaktivität vor dem Festlegen des zugrunde liegenden Auflistungsobjekts ausgeführt wird, wird eine InvalidOperationException ausgelöst, und die Aktivität ist fehlerhaft. |
Auflistungsaktivitäten
Fügt einer angegebenen Auflistung ein Element hinzu. |
|
Entfernt alle Elemente aus einer angegebenen Auflistung. |
|
ExistsInCollection |
Gibt true zurück, wenn ein Element in einer Auflistung vorhanden ist. |
RemoveFromCollection |
Entfernt ein Element aus einer angegebenen Auflistung und gibt true zurück, wenn das Element erfolgreich entfernt wurde. |
Verwenden von Auflistungsaktivitäten
Im folgenden Codebeispiel wird die Arbeit mit einer Auflistung erläutert, die als Workflowvariable deklariert wurde. Die verwendete Auflistung ist ein List’1-Objekt von String-Objekten mit dem Namen fruitList
.
Variable<ICollection<string>> fruitList = new Variable<ICollection<string>>
{
Default = new List<string>
{
"Apple",
"Orange",
},
Name = "FruitList",
};
Variable<bool> result = new Variable<bool>
{
Name = "Result",
}
Sequence seq1 = new Sequence
{
Variables = { fruitList, result },
Activities =
{
new If
{
Condition = new ExistsInCollection<string>
{
Collection = fruitList,
Item = "Pear",
},
Then = new AddToCollection<string>
{
Collection = fruitList,
Item = "Pear",
},
Else = new RemoveFromCollection<string>
{
Collection = fruitList,
Item = “Apple”,
},
new RemoveFromCollection<string>
{
Collection = fruitList,
Item = "Apple",
Result = result,
},
new If
{
Condition = result,
Then = new ClearCollection<string>
{
Collection = fruitList,
}
}
}
};
<Sequence xmlns="https://schemas.microsoft.com/netfx/2009/xaml/activities" xmlns:scg="clr-namespace:System.Collections.Generic;assembly=mscorlib" xmlns:x="https://schemas.microsoft.com/winfx/2006/xaml">
<Sequence.Variables>
<Variable x:TypeArguments="scg:ICollection(x:String)" Name="FruitList">
<Variable.Default>
<Literal x:TypeArguments="scg:ICollection(x:String)" Result="{x:Null}">
<scg:List x:TypeArguments="x:String" Capacity="4">
<x:String>Orange</x:String>
</scg:List>
</Literal>
</Variable.Default>
</Variable>
<Variable x:TypeArguments="x:Boolean" Name="Result" />
</Sequence.Variables>
<If>
<If.Condition>
<InArgument x:TypeArguments="x:Boolean">
<ExistsInCollection x:TypeArguments="x:String" Item="Pear" Result="{x:Null}">[FruitList]</ExistsInCollection>
</InArgument>
</If.Condition>
<If.Else>
<RemoveFromCollection x:TypeArguments="x:String" Item="Apple" Result="{x:Null}">[FruitList]</RemoveFromCollection>
</If.Else>
<If.Then>
<AddToCollection x:TypeArguments="x:String" Item="Pear">[FruitList]</AddToCollection>
</If.Then>
</If>
<RemoveFromCollection x:TypeArguments="x:String" Item="Apple" Result="[Result]">[FruitList]</RemoveFromCollection>
<If Condition="[Result]">
<If.Then>
<ClearCollection x:TypeArguments="x:String">[FruitList]</ClearCollection>
</If.Then>
</If>
</Sequence>