持久对象接口
持久对象实现一个或多个持久对象接口。 客户端使用持久对象接口来告知这些对象存储状态的时间和位置。 所有持久对象接口都派生自 IPersist,因此任何实现任何持久对象接口的对象也实现 IPersist。
当前定义了以下持久对象接口:
- IPersistStream
- IPersistStreamInit
- IPersistStorage
- IPersistFile
- IPersistMoniker
- IPersistMemory
- IPersistPropertyBag
实现程序根据对象的使用方式选择对象支持的持久对象接口。 通过不支持任何持久对象接口,实现程序有效地表示:“无法持久存储此对象的状态。”通过支持一个或多个持久对象接口,实现程序有效地表示:“此对象的状态可以永久存储在一个或多个数据存储介质中。”
例如,下表列出了多个可支持不同的持久对象接口的对象类型。
类别 | 通常支持持久对象接口 |
---|---|
名字对象 |
IPersistStream |
OLE 可嵌入对象 |
IPersistStorage、IPersistFile |
ActiveX 控件 |
IPersistStreamInit、IPersistStorage、IPersistMemory、IPersistPropertyBag、IPersistMoniker |
ActiveX 文档对象 |
IPersistStorage、IPersistFile |
客户端实现程序还可以选择客户端可以使用的持久对象接口。 客户端使用的接口通常由客户端可以存储其自己的数据的位置确定。 只能将其数据存储在平面文件中的客户端可能将只使用 IPersistStreamInit、IPersistMoniker 和 IPersistPropertyBag。 (IPersistStreamInit 可以替换大多数应用程序中的 IPersistStream,因为它包含该定义并添加初始化方法。)此外,可将数据保存到结构化存储文件的客户端将使用 IPersistStorage。