自訂序列化範例

Download sample

這個範例是以工作流程序列化範例範例為基礎所建立。此範例會示範如何序列化工作流程 (其所包含的活動具有無法由預設序列化程式所序列化的屬性)。

在此範例中會建立一個宣告式工作流程。這個工作流程是使用工作流程 (Workflow) 物件模型所組成,而不是用程式碼檔案所定義。新增兩個自訂活動:QueueActivity 和 StackActivity,兩者各自具有 Queue 類型和 Stack 類型的屬性。由於 QueueStack 物件都沒有通用於多數集合類型的預設 AddRemove 方法,標準工作流程序列化程式並不知道要如何存取它們的資料。因此,必須針對這些類型實作自訂序列化程式。

若要實作自訂序列化程式,您必須先覆寫預設的活動序列化程式。您可以在自訂活動上進行屬性 (Attribute) 定義以做到這點:

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

自訂活動序列化程式 (QueueActivitySerializer 和 StackActivitySerializer) 是設計用來在進行序列化 (Serialization) 和還原序列化 (Deserialization) 的之前與之後,新增和移除討論中參數 (在此範例中為 Queue 和 Stack) 所使用之物件類型的自訂序列化程式。這些自訂活動序列化程式會在由相關事件 (指用於序列化的 OnBeforeSerializeOnAfterSerialize,以及用於還原序列化的 OnBeforeDeserializeOnAfterDeserialize) 公開 (Expose) 的序列化管理員上,呼叫 AddSerializationProviderRemoveSerializationProvider

物件類型序列化程式 (QueueSerializer 和 StackSerializer) 會覆寫序列化程式之基底類別 (Base Class) (WorkflowMarkupSerializer) 的相關方法,以存取適當集合類型中的物件。因此,Queue 序列化程式會呼叫 Queue.Enqueue 來將物件新增到佇列,Stack 序列化程式則會呼叫 Stack.Push。同樣地,GetChildren 方法會將集合轉換成陣列清單。若是 Stack 物件,這會牽涉到使項目的順序反向以提供相同的先進後出堆疊行為。

Note注意:

儘管透過此範例中描述的方法可支援建立使用 Queue 和 Stack 物件的工作流程,但是在執行階段編譯的工作流程並不支援使用這些集合類型,詳細資訊請參閱簡單記憶體中範例

建置範例

  1. 按一下 [下載範例] 來下載範例。

  2. 這樣會將範例專案擷取到本機硬碟上。

  3. 按一下 [開始],並依序指向 [程式集] 和 [Microsoft Windows SDK],再按一下 [CMD 殼層]。

  4. 移至範例的來源目錄。

  5. 在命令提示字元上,輸入 MSBUILD <Solution file name>

執行範例

  • 在 [SDK 命令提示字元] 視窗中,於 CustomSerialization\bin\debug 資料夾 (若是範例的 VB 版本,則是 CustomSerialization\bin 資料夾) 中執行此 .exe 檔案,該資料夾位於此範例的主要資料夾下方。

請參閱

其他資源

標記範例
Workflow Markup Overview

Footer image

Copyright © 2007 by Microsoft Corporation. All rights reserved.