Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
DynamicActivity je konkrétní, uzavřená třída s veřejným konstruktorem. DynamicActivity lze použít k sestavení funkcí aktivity za běhu pomocí modulu DOM aktivity.
Funkce DynamicActivity
DynamicActivity má přístup k vlastnostem provádění, argumentům a proměnným, ale žádný přístup ke službám runtime, 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í interagují 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 aplikaci sekvenč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
Mainmetody 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ý
Inargument s názvemTextToWritetypuString.Přetáhněte aktivitu WriteLine z části Primitives panelu nástrojů na plochu návrháře. Přiřaďte hodnotu
TextToWritevlastnosti Text aktivity.Otevřete soubor Program.cs. Na začátek souboru přidejte následující direktivu.
using System.Activities.XamlIntegration;MainObsah metody 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!".
V Průzkumníku řešení klikněte pravým tlačítkem myši na soubor Workflow1.xaml a vyberte Zobrazit kód. Všimněte si, že třída aktivity je vytvořena s
x:Classa vlastnost je vytvořena pomocíx:Property.