共用方式為


持續性介面

具有任何類型永續性狀態的對象必須實作至少一個 IPersist* 介面,最好是多個介面,以提供容器最彈性的選擇,以瞭解如何儲存控件的狀態。

如果控件有任何持續性狀態,則至少必須實作 IPersistStreamIPersistStreamInit(這兩者互斥且不應該在大部分的情況下一起實作)。 當控件想要知道何時建立新的 控件,而不是從現有的永續性狀態重載時,會使用後者(IPersistStream 沒有建立新的功能)。 任一介面的存在表示控件可以儲存並載入其永續性狀態至數據流,也就是 IStream 實例

除了這兩個數據流型介面之外,您也可以選擇性地提供下表所列的 IPersist* 介面,以支援可擴充 IStream以外的位置持續性。

識別出一元件類別來涵蓋持續性介面的支援,請參閱 元件類別

介面 用法
IPersistMemory
物件可以將它的狀態儲存並載入固定長度的循序位元組陣列(記憶體中)。
IPersistStorage
物件可以儲存並載入其狀態至 IStorage 實例。 想要將 Insertable 標示為其他複合檔案物件的控件(用於插入至非控件感知容器)必須支援這個介面。
IPersistPropertyBag
物件可以儲存並載入其狀態,做為寫入容器實作之 IPropertyBag 的個別屬性。 這用於某些容器中的另存新檔文字功能。
IPersistMoniker
物件可以儲存並載入其狀態至Moniker所命名的位置。 控件會呼叫 IMoniker::BindToStorage 來擷取所需的記憶體介面,例如 IStorageIStreamILockBytesIDataObject等。

雖然 IPersistPropertyBag 的支持是選擇性的,但強烈建議您針對具有[另存新檔文字] 功能的容器進行優化,例如 Visual Basic。

除了 IPersistStream::GetSizeMaxIPersistStreamInit::GetSizeMaxIPersistMemory::GetSizeMax之外,每個介面的所有方法都必須完全實作。

控件