Freigeben über


Beispiel für die benutzerdefinierte Serialisierung

Download sample

Dieses Beispiel baut auf dem Beispiel für die Workflowserialisierung-Beispiel auf. Es veranschaulicht die Serialisierung von Workflows mit Aktivitäten, die über Eigenschaften verfügen, die nicht mit dem Standardserialisierungsprogramm serialisiert werden können.

Im Beispiel wird ein deklarativer Workflow erstellt. Hierbei handelt es sich um einen Workflow, der mit dem Workflow-Objektmodell assembliert wird, statt in einer Codedatei definiert zu werden. Es werden zwei benutzerdefinierte Aktivitäten hinzugefügt: QueueActivity und StackActivity, die über eine Eigenschaft des Typs Queue bzw. des Typs Stack verfügen. Da Queue-Objekte und Stack-Objekte nicht über die standardmäßige Add-Methode und Remove-Methode verfügen, die den meisten Auflistungstypen gemeinsam sind, weiß das standardmäßige Workflowserialisierungsprogramm nicht, wie es auf ihre Daten zugreifen soll. Daher müssen für diese Typen benutzerdefinierte Serialisierungsprogramme implementiert werden.

Um das benutzerdefinierte Serialisierungsprogramm zu implementieren, müssen Sie zuerst das Standardaktivitäts-Serialisierungsprogramm überschreiben. Hierzu verwenden Sie eine Attributdefinition für die benutzerdefinierte Aktivität:

[DesignerSerializer(typeof(QueueActivitySerializer), typeof(WorkflowMarkupSerializer))]

Zweck der benutzerdefinierten Aktivitätsserialisierungsprogramme (QueueActivitySerializer und StackActivitySerializer) ist es, ein benutzerdefiniertes Serialisierungsprogramm für den Objekttyp, der vom betreffenden Parameter verwendet wird (im Beispiel Queue und Stack), vor und nach der Serialisierung und Deserialisierung hinzuzufügen und zu entfernen. Die benutzerdefinierten Aktivitätsserialisierungsprogramme rufen AddSerializationProvider und RemoveSerializationProvider für den Serialisierungs-Manager auf, der von den entsprechenden Ereignissen verfügbar gemacht wird (dies sind OnBeforeSerialize und OnAfterSerialize für die Serialisierung und OnBeforeDeserialize und OnAfterDeserialize für die Deserialisierung).

Die Objekttyp-Serialisierungsprogramme (QueueSerializer und StackSerializer) überschreiben die relevanten Methoden der Basisklasse des Serialisierungsprogramms (WorkflowMarkupSerializer), um auf die Objekte im entsprechenden Auflistungstyp zuzugreifen. Daher ruft das Queue-Serialisierungsprogramm Queue.Enqueue auf, um Objekte zur Warteschlange hinzuzufügen, und das Stack-Serialisierungsprogramm ruft Stack.Push auf. Auf ähnliche Weise konvertieren die GetChildren-Methoden die Auflistungen in Arraylisten. Im Zusammenhang mit dem Stack-Objekt schließt dies die Umkehrung der Objektreihenfolge ein, um das gleiche FIFO (First-in-First-out)-Verhalten eines Stapels bereitzustellen.

Tipp

Obwohl die Erstellung von Workflows, die Queue- und Stack-Objekte verwenden, anhand der in diesem Beispiel beschriebenen Methode unterstützt wird, wird die Verwendung von Auflistungstypen für zur Laufzeit kompilierte Workflows, wie unter Beispiel für einfaches Ausführen im Arbeitsspeicher beschrieben, nicht unterstützt.

So erstellen Sie das Beispiel

  1. Laden Sie das Beispiel herunter, indem Sie auf Beispiel downloaden klicken.

  2. Hierdurch wird das Beispielprojekt auf die lokale Festplatte extrahiert.

  3. Klicken Sie auf Start, zeigen Sie auf Programme, zeigen Sie auf Microsoft Windows SDK, und klicken Sie dann auf CMD Shell.

  4. Wechseln Sie zum Quellverzeichnis des Beispiels.

  5. Geben Sie an der Eingabeaufforderung MSBUILD <Name der Projektmappendatei> ein.

So führen Sie das Beispiel aus

  • Führen Sie im Eingabeaufforderungsfenster des SDKs die EXE-Datei im Ordner CustomSerialization\bin\debug aus (bzw. im CustomSerialization\bin für die VB-Version des Beispiels), der sich unter dem Hauptordner des Beispiels befindet.

Siehe auch

Weitere Ressourcen

Markupbeispiele
Workflow Markup Overview

Footer image

Copyright © 2007 by Microsoft Corporation. Alle Rechte vorbehalten.