2009-02-20 106 views
1

对于某些文件操作,我们使用VB6的PropertyBag对象通过Content属性将各种项目转换为bytearray。然后我们将字节阵列保存为二进制文件的一部分。稍后当我们加载文件时,我们读取文件,读入bytearray并使用propertybag的readproperty重新构建该项目。我们大量使用这些来存储客户徽标等图像。在.NET中转换VB6 PropertyBag

.NET框架对PropertyBags的工作有什么支持? Othan比编写一个COM助手DLL。属性包是VB6唯一的构造,还是属于一般OLE/COM自动化框架的一部分?

我希望避免写一个VB6助手DLL和直接访问(通过声明)所需的COM函数。我不想复制功能,而是将存储在bytearray中的对象转换为与.NET等价的对象。

注意:我不想在.NET中实现属性包的功能。只能读取保存的VB6 Property Bag的字节。

回答

1

你可以看看Edanmo的加载并保存图片到他的old VB6 sample page上的字节数组样本。这非常简单,可以用来“序列化”任何实现IPersistStream接口的对象,例如ADODB.Recordset。 VB6的PropertyBag为对象使用IPersistStream,并可能实现“自定义”VT_Xxx变体类型序列化。

顺便说一下,Edanmo的代码片段允许您读取通过复制/粘贴存储到Access网格的图像列的图像。

+0

这真是太好了,谢谢。 – 2009-10-06 14:24:57

2

.NET中PropertyBags的支持为0。对象的隔离替换PropertyBag构造。

所以当我看到它时,你有两种选择。

  1. Byte the bullet and writer the 10 or 20 line Interop dll。
  2. 分析序列化属性包的内容,看看是否可以将其解码并找出图像和流等

我知道我会走向哪一个的偏移。

+0

我希望物业包在OLE引擎中做得很深。但它看起来像interop是要走的路。谢谢 – 2009-04-17 12:23:09