Vytvoření aktivity za běhu pomocí funkce DynamicActivity
DynamicActivity je betonová, zapečetěná třída s veřejným konstruktorem. DynamicActivity lze použít k sestavení funkčnosti aktivity za běhu pomocí dom aktivity.
Funkce dynamicactivity
DynamicActivity má přístup k vlastnostem spuštění, argumentům a proměnným, ale nemá přístup ke službám za běhu, jako je plánování podřízených aktivit nebo sledování.
Vlastnosti nejvyšší úrovně lze nastavit pomocí objektů pracovního postupu Argument . V imperativním kódu jsou tyto argumenty vytvořeny pomocí vlastností CLR na novém typu. V JAZYCE XAML jsou deklarovány pomocí x:Class
a x:Member
značky.
Aktivity vytvořené pomocí DynamicActivity rozhraní s návrhářem pomocí ICustomTypeDescriptor. Aktivity vytvořené v návrháři lze dynamicky načíst pomocí Load, jak je znázorněno v následujícím postupu.
Vytvoření aktivity za běhu pomocí imperativního kódu
OpenVisual Studio 2010.
Vyberte Soubor, Nový, Projekt. V okně Typy projektů vyberte v části Visual C# pracovní postup 4.0 a vyberte uzel v2010. V okně Šablony vyberte konzolovou aplikacisekvenčního pracovního postupu. Pojmenujte nový projekt DynamicActivitySample.
V projektu HelloActivity klikněte pravým tlačítkem myši na Workflow1.xaml a vyberte Odstranit.
Otevřete soubor Program.cs. Na začátek souboru přidejte následující direktivu.
using System.Collections.Generic;
Nahraďte obsah
Main
metody následujícím kódem, který vytvoří Sequence aktivitu, která obsahuje jednu WriteLine aktivitu a přiřadí ji k Implementation vlastnosti nové dynamické aktivity.//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();
Spusťte aplikaci. Okno konzoly s textem "Hello World!" se zobrazí.
Vytvoření aktivity za běhu pomocí XAML
Otevřete Visual Studio 2010.
Vyberte Soubor, Nový, Projekt. V okně Typy projektů vyberte v části Visual C# pracovní postup 4.0 a vyberte uzel v2010. V okně Šablony vyberte konzolovou aplikaci pracovního postupu. Pojmenujte nový projekt DynamicActivitySample.
Otevřete Workflow1.xaml v projektu HelloActivity. Klikněte na možnost Argumenty v dolní části návrháře. Vytvořte nový
In
argument s názvemTextToWrite
typuString
.Přetáhněte aktivitu WriteLine z části Primitives panelu nástrojů na plochu návrháře. Přiřaďte hodnotu
TextToWrite
vlastnosti Text aktivity.Otevřete soubor Program.cs. Na začátek souboru přidejte následující direktivu.
using System.Activities.XamlIntegration;
Obsah metody
Main
nahraďte následujícím kódem.Activity act2 = ActivityXamlServices.Load(@"Workflow1.xaml"); results = WorkflowInvoker.Invoke(act2, new Dictionary<string, object> { { "TextToWrite", "HelloWorld!" } }); Console.ReadLine();
Spusťte aplikaci. Zobrazí se okno konzoly s textem "Hello World!".
Pravým tlačítkem myši klikněte na soubor Workflow1.xaml v Průzkumník řešení a vyberte Zobrazit kód. Všimněte si, že třída aktivity je vytvořena s
x:Class
a vlastnost je vytvořena pomocíx:Property
.