Kalıcılık Arabirimleri

Herhangi bir tür kalıcı duruma sahip nesneler, kapsayıcıya bir denetimin durumunu nasıl kaydetmek istediği konusunda en esnek seçimi sağlamak için en az bir IPersist* arabirimi ve tercihen birden çok arabirim uygulamalıdır.

Bir denetimin kalıcı bir durumu varsa, en azından IPersistStream veya IPersistStreamInit uygulamalıdır (ikisi birbirini dışlar ve çoğu zaman birlikte uygulanmamalıdır). İkinci seçenek, bir denetimin mevcut kalıcı durumdan yeniden yüklenmesinin aksine ne zaman yeni oluşturulduğunu bilmek istediğinde kullanılır (IPersistStream oluşturulan yeni özelliğe sahip değildir). Her iki arabirimin de varlığı, denetimin kalıcı durumunu bir akışa kaydedebileceğini ve yükleyebileceğini, yani IStreamörneğini gösterir.

Bu iki akış tabanlı arabirimin ötesinde, aşağıdaki tabloda listelenen IPersist* arabirimleri, IStreamgenişletilebilirdışındaki konumlarda kalıcılığı desteklemek için isteğe bağlı olarak sağlanabilir.

Kalıcılık arabirimleri desteğini kapsayacak şekilde bir bileşen kategorisi kümesi tanımlanır. Bkz. Bileşen Kategorileri.

Arayüz Kullanım
IPersistMemory
Nesne, durumunu sabit uzunlukta bir sıralı bayt dizisine (bellekte) kaydedebilir ve yükleyebilir.
IPersistStorage
Nesnesi durumunu kaydedebilir ve bir IStorage örneğine yükleyebilir. Eklenebilir olarak diğer bileşik belge nesneleri olarak işaretlenmek isteyen denetimler (denetime duyarlı olmayan kapsayıcılara eklemek için) bu arabirimi desteklemelidir.
IPersistPropertyBag
nesnesi, kapsayıcının uyguladığı IPropertyBag'e yazılan tek tek özellikler olarak durumunu kaydedebilir ve yükleyebilir. Bu, bazı kapsayıcılarda Metin Olarak Kaydet işlevi için kullanılır.
IPersistMoniker
Nesne, durumunu kaydedebilir ve bir takma adla adlandırılan bir konuma yükleyebilir. Denetim, IMoniker::BindToStorage çağırarak IStorage, IStream, ILockBytesIDataObjectvb. gibi depolama arabirimini alır.

IPersistPropertyBag desteği isteğe bağlı olsa da, Visual Basic gibi Farklı Kaydet Metin özelliklerine sahip kapsayıcılar için iyileştirme olarak kesinlikle önerilir.

IPersistStream::GetSizeMax, IPersistStreamInit::GetSizeMaxve IPersistMemory::GetSizeMaxdışında, her arabirimin tüm yöntemleri tam olarak uygulanmalıdır.

Denetimleri