Skip to content

PropertyBag 类

PropertyBag是为跨会话持久化对象状态而设计的小型键/值存储。每个条目是一个名称和一个Variant值;读取和写入条目是对称的,因此启动时加载包状态的代码可以在关闭时再次存储。整个包也可以通过Contents作为单个字节数组检索或替换,使得将状态保存到文件、数据库列或另一个PropertyBag变得简单。

新的PropertyBag使用New创建,初始为空:

``vb Dim Bag As New PropertyBag Bag.WriteProperty "Caption", Me.Caption, "Untitled" Bag.WriteProperty "Width", Me.Width, 800

' 将包持久化到磁盘。 Dim Stream As Integer Stream = FreeFile Open "settings.bin" For Binary Access Write As #Stream Put #Stream, , Bag.Contents Close #Stream ``

运行时也将PropertyBag传递给UserControlWritePropertiesReadProperties事件;与用户代码中使用的相同API可通过宿主存储持久化控件的设计时和运行时状态。

成员

Contents

返回或设置包的完整状态,类型为保存Byte数组的单个Variant

语法:object.Contents [ = value ]

object
必需 求值为PropertyBag对象的对象表达式。
value
包含先前从另一个PropertyBagContents获取的Byte数组的Variant

读取Contents将整个包——当前其中的每个名称/值对——序列化为自包含的字节数组,适合写入文件、通过网络发送或存储到其他介质。对Contents赋值将丢弃当前状态,替换为value中编码的状态;字节数组必须是由兼容PropertyBag先前生成的。

ReadProperty

返回先前以给定名称存储在包中的值。

语法:object.ReadProperty( Name [ , DefaultValue ] )

object
必需 求值为PropertyBag对象的对象表达式。
Name
必需 给出值写入时的键的String。名称按不区分大小写匹配。
DefaultValue
可选 当包不包含名为Name的条目时返回的值。可以是可赋值给Variant的任何类型。如果省略,缺失条目的ReadProperty返回Null

在控件的ReadProperties事件内部,约定向ReadProperty传递与WriteProperty相同的默认值,使控件在未持久化值时回退到其设计时默认值。

WriteProperty

以给定名称在包中存储值。

语法:object.WriteProperty Name , Value [ , DefaultValue ]

object
必需 求值为PropertyBag对象的对象表达式。
Name
必需 给出存储值所用键的String。如果先前已以相同名称存储了值,则替换。
Value
必需 要存储的值。可以是可赋值给Variant的任何表达式。
DefaultValue
可选 消费者在读取属性时将视为默认的值。如果Value等于DefaultValue,包可以完全跳过写入条目——读取端会回退到相同的默认值——从而保持序列化形式精简。传递与匹配的ReadProperty调用相同的默认值。

twinBASIC及其LOGO版权为作者"韦恩"所有