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传递给UserControl的WriteProperties和ReadProperties事件;与用户代码中使用的相同API可通过宿主存储持久化控件的设计时和运行时状态。
成员
Contents
返回或设置包的完整状态,类型为保存Byte数组的单个Variant。
语法:object.Contents [ = value ]
- object
- 必需 求值为PropertyBag对象的对象表达式。
- value
- 包含先前从另一个PropertyBag的Contents获取的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调用相同的默认值。