对于某些文件操作,我们使用VB6的PropertyBag对象通过Content属性将各种项目转换为bytearray。然后,我们将bytearray保存为二进制文件的一部分。稍后当我们加载文件时,我们读回文件,读入bytearray并使用propertybag的readproperty重新构建项目。我们经常使用它来存储客户徽标等图像。
.NET框架对使用PropertyBags有什么支持? Othan比写一个COM助手DLL。 Property包是VB6唯一的构造还是它们是一般OLE / COM自动化框架的一部分?
我所希望的是避免编写VB6辅助DLL并直接访问(通过声明)所需的COM函数。我不是要复制功能,而是将存储在bytearray中的对象转换为它们的.NET等价物。
注意:我对在.NET中实现属性包的功能不感兴趣。只能读取已保存的VB6 Property Bag的字节。
答案 0 :(得分:2)
.NET中对PropertyBags有0支持。对象的Serailisation取代了PropertyBag构造。
所以我看到你有两个选择。
我知道我要前往哪一个。
答案 1 :(得分:1)
您可以在他的old VB6 sample page上查看Edanmo的加载并将图片保存到字节数组示例。它非常简单,可用于“序列化”任何实现IPersistStream接口的对象,例如ADODB.Recordset。 VB6的PropertyBag使用IPersistStream作为对象,可能实现“自定义”VT_Xxx变体类型序列化。
顺便说一下,Edanmo的代码片段允许您将通过复制/粘贴存储的图像读取到Access网格的图像列。
答案 2 :(得分:0)
It is worth pointing out that you can directly access the VB6 PropertyBag from .NET by referencing the VB6 runtime DLL in your project.
Add a reference to: C:\WINDOWS\SysWow64\MSVBVM60.DLL
(or might by in System32 folder)
and you will then see PropertyBag in the object browser:
Note that this VB6 class does not have functionality for reading/writing to disk files, byte arrays, etc. It only manages the in-memory data (AFAIK). So this alone does not solve the issue of how to save/load data in whatever format the PropertyBag was stored in.