為設計工具提供復原支援

設計工具(例如編輯器)通常需要支援復原作業,以便使用者在修改程式碼專案時,可以反轉其最近的變更。

在 Visual Studio 中執行的大部分設計工具都有環境自動提供的「復原」支援。

需要提供復原功能支援的設計工具:

如需使用 .NET Framework 撰寫設計工具的詳細資訊,請參閱擴充 Design-Time 支援

Visual Studio SDK提供預設的復原基礎結構,方式如下:

自動取得復原支援

在 Visual Studio 中建立的任何設計工具,在設計工具時都具有自動和完整復原支援:

  • 使用型類別做 Control 為其使用者介面。

  • 採用標準的 CodeDOM 型程式碼產生和剖析系統,以產生程式碼和持續性。

    如需有關使用 Visual Studio CodeDOM 支援的詳細資訊,請參閱動態原始程式碼產生和編譯

使用明確設計工具復原支援的時機

如果設計人員使用圖形化使用者介面(稱為 view adapter)(而非提供者),則必須提供自己的復原管理 Control

其中一個範例可能是以 web 為基礎的圖形設計介面來建立產品,而不是以 .NET Framework 為基礎的圖形化介面。

在這種情況下,您需要使用 Visual Studio 註冊此 view adapter ProvideViewAdapterAttribute ,並提供明確的復原管理。

如果設計工具未使用命名空間中提供的 Visual Studio 程式碼產生模型,則需要提供 CodeDOM 和持續性支援 System.CodeDom

復原設計工具的支援功能

環境 SDK 提供所需的預設介面介面,以提供復原支援,而設計工具可使用 Control 其使用者介面或標準 CodeDOM 和持續性模型,而不使用型類別。

OleUndoEngine類別衍生自 .NET Framework 類別,其 UndoEngine 使用類別的實 IOleUndoManager 來管理復原作業。

Visual Studio 提供下列功能給設計工具復原:

環境 SDK 提供 CodeDOM 和持續性支援,方法是提供:

使用環境 SDK 功能來提供復原支援

若要取得復原支援,執行設計工具的物件必須具現化,並 OleUndoEngine 使用有效的實初始化類別的實例 IServiceProvider 。 此 IServiceProvider 類別必須提供下列服務:

執行以復原機制為基礎的設計工具 OleUndoEngine 會在下列情況自動追蹤變更:

另請參閱