Definování a použití delegátů aktivit v návrháři postupu provádění
.NET Framework 4.5 obsahuje předefinovaný návrhář aktivity InvokeDelegate . Tento návrhář lze použít k přiřazení delegátů k aktivitě odvozené od ActivityDelegate, například ActivityAction nebo ActivityFunc<TResult>.
Definování delegáta aktivity
Vytvořte nový projekt konzolové aplikace pracovního postupu.
Poznámka:
Pokud šablony projektu pracovního postupu nevidíte, nejprve nainstalujte komponentu Windows Workflow Foundation sady Visual Studio. Podrobné pokyny naleznete v tématu Instalace windows Workflow Foundation.
Klikněte pravým tlačítkem myši na projekt v Průzkumník řešení a vyberte Přidat>novou položku. Vyberte kategorii Pracovní postup a pak vyberte šablonu položky aktivity. Pojmenujte novou aktivitu MyForEach.xaml a pak vyberte OK.
Aktivita se otevře v návrháři pracovního postupu.
V Návrháři pracovního postupu klikněte na kartu Argumenty .
Klikněte na Vytvořit argument. Pojmenujte nové argumenty Položky.
Ve sloupci Typ argumentu vyberte Pole [T].
V prohlížeči typů vyberte Objekt a pak vyberte OK.
Znovu klikněte na Vytvořit argument . Pojmenujte nový text argumentu. Ve sloupci Směr nového argumentu vyberte Vlastnost.
Ve sloupci Typ argumentu vyberte Vyhledat typy.
V prohlížeči typů zadejte ActivityAction do pole Název typu. Ve stromovém zobrazení vyberte ActivityAction<T> . V rozevíracím seznamu vyberte objekt , který se zobrazí pro přiřazení typu ActivityAction<Object> k argumentu.
While Přetáhněte aktivitu z části Tok řízení panelu nástrojů na plochu návrháře.
While Vyberte aktivitu a vyberte kartu Proměnné.
Vyberte Vytvořit proměnnou. Pojmenujte nový index proměnné.
Ve sloupci Typ proměnné vyberte Int32. Ponechte obor jako While a výchozí sloupec prázdný.
Nastavte vlastnost While Podmínka aktivity na index < Items.Length;.
InvokeDelegate Přetáhněte aktivitu z části Primitivy panelu nástrojů do těla While aktivity.
V rozevíracím seznamu delegáta vyberte Text .
V mřížce Vlastnosti aktivity InvokeDelegate klepněte na tlačítko ... ve vlastnosti Delegate Arguments.
Do sloupce Hodnota argumentu s názvem Argument zadejte Items[Index]. Kliknutím na ok zavřete dialogové okno DelegateArguments.
Assign Přetáhněte aktivitu na vodorovnou čáru pod aktivitouInvokeDelegate. Aktivita Assign se vytvoří a Sequence aktivita se vytvoří automaticky tak, aby obsahovala dvě aktivity v části Tělo aktivity MyForEach. Sekvence je potřebná, protože oddíl Body může obsahovat pouze jednu aktivitu. Automatické vytvoření nové Sequence aktivity je nová funkce rozhraní .NET Framework 4.5.
Nastavte vlastnost Assign To aktivity na index. Nastavte vlastnost Value aktivity Assign index+1.
Vlastní aktivita MyForEach vyvolá libovolnou aktivitu jednou pro každou hodnotu předanou prostřednictvím kolekce Items s hodnotami v kolekci jako vstupy pro aktivitu.
Použití vlastní aktivity v pracovním postupu
Sestavte projekt stisknutím kombinace kláves Ctrl+Shift+B.
V Průzkumník řešení otevřete v návrháři soubor Workflow1.xaml.
Přetáhněte aktivitu MyForEach z panelu nástrojů na plochu návrháře. Aktivita je v části panelu nástrojů se stejným názvem jako projekt.
Nastavte vlastnost Items aktivity MyForEach na nový objekt[] {1, "abc"}.
WriteLine Přetáhněte aktivitu z části Primitives panelu nástrojů do části Delegate:Body aktivity MyForEach.
Nastavte vlastnost WriteLine Text aktivity na Argument.ToString().
Po spuštění pracovního postupu se v konzole zobrazí následující výstup:
1abc