Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
DynamicActivity jest ostateczną klasą z publicznym konstruktorem. DynamicActivity można używać do tworzenia funkcjonalności aktywności w czasie wykonywania przy użyciu modelu DOM.
Funkcje DynamicActivity
DynamicActivity ma dostęp do właściwości wykonywania, argumentów i zmiennych, ale nie ma dostępu do usług środowiska uruchomieniowego, takich jak planowanie działań podrzędnych lub śledzenie.
Właściwości najwyższego poziomu można ustawić przy użyciu obiektów przepływu pracy Argument . W kodzie imperatywne te argumenty są tworzone przy użyciu właściwości CLR w nowym typie. W języku XAML są deklarowane przy użyciu tagów x:Class i .x:Member
Działania skonstruowane przy użyciu DynamicActivity interfejsu współpracują z projektantem za pomocą ICustomTypeDescriptor. Działania utworzone w projektancie można ładować dynamicznie przy użyciu metody Load, jak pokazano w poniższej procedurze.
Aby utworzyć działanie w czasie wykonywania przy użyciu kodu imperatywnego
Otwórz Visual Studio 2010.
Wybierz Plik, Nowy, Projekt Wybierz pozycję Przepływ pracy 4.0 w obszarze Visual C# w oknie Typy projektów i wybierz węzeł v2010 . Wybierz Aplikację konsoli przepływu pracy sekwencyjnego w oknie Szablony. Nadaj nowej nazwie projekt DynamicActivitySample.
Kliknij prawym przyciskiem myszy pozycję Workflow1.xaml w projekcie HelloActivity i wybierz polecenie Usuń.
Otwórz plik Program.cs. Dodaj następującą dyrektywę na początku pliku.
using System.Collections.Generic;Zastąp zawartość
Mainmetody następującym kodem, który tworzy Sequence działanie zawierające jedno WriteLine działanie i przypisuje go do Implementation właściwości nowego działania dynamicznego.//Define the input argument for the activity var textOut = new InArgument<string>(); //Create the activity, property, and implementation Activity dynamicWorkflow = new DynamicActivity() { Properties = { new DynamicActivityProperty { Name = "Text", Type = typeof(InArgument<String>), Value = textOut } }, Implementation = () => new Sequence() { Activities = { new WriteLine() { Text = new InArgument<string>(env => textOut.Get(env)) } } } }; //Execute the activity with a parameter dictionary WorkflowInvoker.Invoke(dynamicWorkflow, new Dictionary<string, object> { { "Text", "Hello World!" } }); Console.ReadLine();Wykonaj aplikację. Zostanie wyświetlone okno konsoli z tekstem "Hello World!".
Aby utworzyć działanie przy użyciu języka XAML w czasie wykonywania
Otwórz program Visual Studio 2010.
Wybierz Plik, Nowy, Projekt Wybierz pozycję Przepływ pracy 4.0 w obszarze Visual C# w oknie Typy projektów i wybierz węzeł v2010 . Wybierz Aplikacja konsolowa przepływu pracy w oknie Szablony. Nadaj nowej nazwie projekt DynamicActivitySample.
Otwórz plik Workflow1.xaml w projekcie HelloActivity. Kliknij opcję Argumenty w dolnej części projektanta. Utwórz nowy
Inargument o nazwieTextToWritetypuString.Przeciągnij działanie WriteLine z sekcji Typy pierwotne przybornika na powierzchnię projektanta. Przypisz wartość
TextToWritedo właściwości Text działania.Otwórz plik Program.cs. Dodaj następującą dyrektywę na początku pliku.
using System.Activities.XamlIntegration;Zastąp zawartość
Mainmetody następującym kodem.Activity act2 = ActivityXamlServices.Load(@"Workflow1.xaml"); results = WorkflowInvoker.Invoke(act2, new Dictionary<string, object> { { "TextToWrite", "HelloWorld!" } }); Console.ReadLine();Wykonaj aplikację. Zostanie wyświetlone okno konsoli z tekstem "Hello World!".
Kliknij prawym przyciskiem myszy plik Workflow1.xaml w Eksploratorze rozwiązań i wybierz pozycję Wyświetl kod. Należy pamiętać, że klasa działania jest tworzona za pomocą
x:Classpolecenia , a właściwość jest tworzona za pomocąx:Propertypolecenia .