提供用於設計工具的復原功能支援
設計工具中的,如編輯器,通常需要支援復原作業,以便修改程式碼項目時,使用者可以還原其最近的變更。
在 Visual Studio 中實作的多數具有自動環境所提供的復原功能支援。
設計工具的實作需要提供復原功能的支援:
藉由實作抽象的基底類別提供復原管理UndoEngine
提供持續性和 CodeDOM 支援藉由實作IDesignerSerializationService和IComponentChangeService類別。
如需有關撰寫使用設計工具.NET Framework,請參閱擴充設計階段支援。
Visual Studio SDK提供的預設復原基礎結構:
提供復原管理實作透過OleUndoEngine和UndoUnit類別。
提供持續性和所有預設的 CodeDOM 支援CodeDomComponentSerializationService和IComponentChangeService的實作。
自動取得復原功能支援
在建立任何設計工具Visual Studio自動和完全復原支援 if,設計工具:
利用Control以作為其使用者介面的類別。
程式碼產生和保存性的採用標準的 CodeDOM 程式碼產生和剖析的系統。
如需有關使用 Visual Studio 的 CodeDOM 支援的詳細資訊,請參閱動態原始程式碼的產生和編譯
何時使用明確的設計工具的復原功能支援
如果使用圖形使用者介面,稱為 「 檢視配置器,不同於所提供的設計工具必須提供自己的復原管理Control。
舉例而言,這可能會造成一項產品以 web 為基礎的圖形設計介面,而非.NET Framework以圖形化介面。
在這種情況下,其中一個需要註冊使用此檢視配置器Visual Studio使用ProvideViewAdapterAttribute,並提供明確的復原管理。
設計工具必須提供 CodeDOM 和保存性支援如果它們不會使用Visual Studio中所提供的程式碼產生模型System.CodeDom命名空間。
復原支援功能的設計工具
環境 SDK 提供可供不使用的設計工具的支援復原功能的介面需要能提供的預設實作Control根據它們的使用者介面或標準的 CodeDOM 和保存性模型的類別。
OleUndoEngine類別衍生自.NET FrameworkUndoEngine類別使用的實作IOleUndoManager類別以管理復原作業。
Visual Studio 提供設計工具的復原下列功能:
跨多個設計工具的連結的復原功能。
使用設計工具中的子系單位可以操作其父代實作IOleUndoUnit和IOleParentUndoUnit的UndoUnit。
環境 SDK 提供 CodeDOM 和保存性藉由提供的支援:
A IComponentChangeService所提供的Visual Studio設計主應用程式。
使用環境 SDK 功能,以提供復原功能支援
若要取得復原功能支援,實作設計工具的物件必須:
執行個體化及初始化執行個體的OleUndoEngine使用有效的類別IServiceProvider實作。
這IServiceProvider類別必須提供下列服務:
-
使用設計工具Visual Studio CodeDOM 序列化可以選擇使用CodeDomComponentSerializationService隨附Visual Studio SDK做為其實的IDesignerSerializationService。
如此一來, IServiceProvider類別提供給OleUndoEngine建構函式應該會傳回這個物件,以實作IDesignerSerializationService類別。
-
使用預設的設計工具DesignSurface所提供的Visual Studio保證設計主應用程式都有的預設實作IComponentChangeService類別。
設計工具實作OleUndoEngine型的復原機制會自動追蹤變更,如果:
屬性變更透過TypeDescriptor物件。
IComponentChangeService可復原的變更已認可時,會以手動方式會產生事件。
修改設計工具上的所建立的內容中DesignerTransaction。
設計工具選擇明確建立標準的復原單位所提供的實作使用的復原單位UndoUnit或 Visual Studio 的特定實作UndoUnit,它是衍生自UndoUnit並也提供兩個實作IOleUndoUnit和IOleParentUndoUnit。