Definiowanie i stosowanie delegowania działania w Projektancie przepływu pracy
Program .NET Framework 4.5 zawiera gotowego projektanta InvokeDelegate działania. Ten projektant może służyć do przypisywania delegatów do działania pochodzącego z ActivityDelegateelementu , takiego jak ActivityAction lub ActivityFunc<TResult>.
Definiowanie delegata działania
Utwórz nowy projekt aplikacji konsoli przepływu pracy.
Uwaga
Jeśli nie widzisz szablonów projektów Przepływ pracy , najpierw zainstaluj składnik Windows Workflow Foundation programu Visual Studio. Aby uzyskać szczegółowe instrukcje, zobacz Instalowanie programu Windows Workflow Foundation.
Kliknij prawym przyciskiem myszy projekt w Eksplorator rozwiązań i wybierz polecenie Dodaj>nowy element. Wybierz kategorię Przepływ pracy , a następnie wybierz szablon Element działania . Nadaj nowemu działaniu nazwę MyForEach.xaml , a następnie wybierz przycisk OK.
Działanie zostanie otwarte w projektancie przepływu pracy.
W Projektant przepływu pracy kliknij kartę Argumenty.
Kliknij pozycję Utwórz argument. Nazwij nowy argument Items.
W kolumnie Typ argumentu wybierz pozycję Tablica [T].
W przeglądarce wpisz, wybierz pozycję Obiekt , a następnie wybierz przycisk OK.
Ponownie kliknij przycisk Utwórz argument . Nadaj nowej nazwie treść argumentu. W kolumnie Direction (Kierunek) dla nowego argumentu wybierz pozycję Właściwość.
W kolumnie Typ argumentu wybierz pozycję Przeglądaj dla typów
W przeglądarce wpisz ActivityAction w polu Nazwa typu . Wybierz kolejno pozycje ActivityAction<T> w widoku drzewa. Wybierz pozycję Obiekt na liście rozwijanej, która zostanie wyświetlona, aby przypisać typ ActivityAction<Object> do argumentu.
Przeciągnij While działanie z sekcji Przepływ sterowania przybornika do powierzchni projektanta.
While Wybierz działanie i wybierz kartę Zmienne.
Wybierz pozycję Utwórz zmienną. Nazwij nowy indeks zmiennej.
W kolumnie Typ zmiennej wybierz pozycję Int32. Pozostaw pole Zakres jako While, a kolumna Default (Wartość domyślna) jest pusta.
Ustaw właściwość While Condition działania na indeks < Items.Length;.
InvokeDelegate Przeciągnij działanie z sekcji Typy pierwotne przybornika do treści While działania.
Wybierz pozycję Treść z listy rozwijanej delegata.
W siatce Właściwości działania InvokeDelegate kliknij przycisk ... we właściwości Deleguj argumenty.
W kolumnie Wartość argumentu o nazwie Argument wprowadź ciąg Items[Index]. Kliknij przycisk OK , aby zamknąć okno dialogowe DelegateArguments .
Przeciągnij Assign działanie na linię poziomą poniżej InvokeDelegate działania. Zostanie Assign utworzone działanie, a Sequence działanie zostanie utworzone automatycznie, aby zawierało dwa działania w sekcji Treść działania MyForEach. Sekwencja jest wymagana, ponieważ sekcja Treść może zawierać tylko jedno działanie. Automatyczne tworzenie nowego Sequence działania to nowa funkcja programu .NET Framework 4.5.
Ustaw właściwość To działania Assign na indeks. Ustaw właściwość Value działania Assign na index+1.
Niestandardowe działanie MyForEach wywołuje dowolne działanie raz dla każdej wartości przekazanej do niej za pośrednictwem kolekcji Items z wartościami w kolekcji jako danymi wejściowymi dla działania.
Używanie działania niestandardowego w przepływie pracy
Skompiluj projekt, naciskając klawisze Ctrl+Shift+B.
W Eksplorator rozwiązań otwórz plik Workflow1.xaml w projektancie.
Przeciągnij działanie MyForEach z przybornika do powierzchni projektanta. Działanie znajduje się w sekcji przybornika o takiej samej nazwie jak projekt.
Ustaw właściwość Items działania MyForEach na nowy obiekt[] {1, "abc"}.
WriteLine Przeciągnij działanie z sekcji Typy pierwotne przybornika do sekcji Delegate:Body działania MyForEach.
Ustaw właściwość WriteLine Text działania na Argument.ToString().
Po wykonaniu przepływu pracy konsola wyświetli następujące dane wyjściowe:
1abc