Contents Previous Page Next Page
IPersistPropertyBag

The IPersistPropertyBag interface works in conjunction with IPropertyBag and IErrorLog to define an individual property-based persistence mechanism. Whereas a mechanism like IPersistStream gives an object an IStream in which to store its binary data, IPersistPropertyBag provides an object with an IPropertyBag interface through which it can save and load individual properties. The implementor of IPropertyBag can then save those properties in whatever way it chooses, such as name/value pairs in a text file. Errors encountered in the process (on either side) are recorded in an error log through IErrorLog. This error reporting mechanism work on a per-property basis instead of an all properties as a whole basis through just the return value of IPersist*::Load or IPersist*::Save.

The basic mechanism is that a container tells the object to save or load its properties through IPersistPropertyBag. For each property, the object calls the containerÆs IPropertyBag interface passed to the IPersistPropertyBag methods. IPropertyBag::Write saves a property in whatever place the container wants to put it, and IPropertyBag::Read retrieves a property.

This protocol is essentially a means of sequentially communicating individual property values from the object to the container, which is useful for doing save-as-text operations and the like. The object gives the container the choice of the format in which each property is saved, while retaining itself the decision as to which properties are saved or loaded.

Methods in Vtable Order

IUnknown Methods                       Description                                    
                                                                                      
QueryInterface                         
Returns pointers to supported interfaces.      
                                                                                      
AddRef                                 Increments reference count.                    
                                                                                      
Release                                Decrements reference count.                    
                                                                                      

IPersist Method                        Description                                    
                                                                                      
GetClassID                             
Returns the class identifier (CLSID) for the   
                                       component object.                               
                                                                                      

IPersistPropertyBag Methods            Description                                    
                                                                                      
InitNew                                
Informs the object that it is being initialized 
                                       as a newly created object.                      
                                                                                      
Load                                   Instructs the object to initialize itself using 
                                       the properties in the property bag and notifying 
                                       the error log when errors occur.                
                                                                                      
Save                                   Instructs object to save its properties to the 
                                       specified property bag.                         
                                                                                      

See Also

IErrorLog, IPropertyBag