Преобразование VB6 PropertyBag в .NET - PullRequest
2 голосов
/ 20 февраля 2009

Для определенных файловых операций мы используем объект PropertyBag VB6 для преобразования различных элементов в байтовый массив через свойство Content. Затем мы сохраняем bytearray как часть двоичного файла. Позже, когда мы загружаем файл, мы читаем его обратно, читаем в байтовом массиве и воссоздаем элемент, используя свойство чтения пакета свойств. Мы часто используем это для хранения таких изображений, как логотип клиента.

Какую поддержку имеет .NET Framework для работы с PropertyBags? От того, чем писать DLL-помощник COM. Являются ли Property Bags только конструкцией VB6 или они являются частью общей инфраструктуры автоматизации OLE / COM?

То, на что я надеюсь, это избежать написания вспомогательной DLL-библиотеки VB6 и прямого доступа (через объявление) к необходимым COM-функциям. Я не собираюсь дублировать функциональность, а скорее преобразовать объект, хранящийся в байтовом массиве, в их эквивалент .NET.

ПРИМЕЧАНИЕ: Я не заинтересован в реализации функциональности пакета свойств в .NET. Только в состоянии прочитать байты сохраненного пакета свойств VB6.

Ответы [ 3 ]

2 голосов
/ 17 апреля 2009

В .NET поддерживается 0 пакетов PropertyBags. Разделение объектов заменяет конструкцию PropertyBag.

Итак, на мой взгляд, у вас есть 2 варианта.

  1. Байт пули и напишите 10 или 20 строчку Interop dll.
  2. Проанализируйте содержимое пакета сериализованных свойств и посмотрите, сможете ли вы его декодировать и выясните смещения изображений и потоков и т. Д.

Я знаю, к какому из них я направляюсь.

1 голос
/ 05 октября 2009

Вы можете проверить Edanmo Загрузка и сохранение изображений в байтовые массивы семпл на его старой странице семплов VB6 . Это очень просто и может использоваться для "сериализации" любого объекта, который реализует интерфейс IPersistStream, например, ADODB.Recordset. PropertyBag VB6 использует IPersistStream для объектов и, вероятно, реализует «настраиваемую» сериализацию типов вариантов VT_Xxx.

Кстати, фрагмент кода Edanmo позволяет читать изображения, сохраненные с помощью копирования / вставки, в столбец изображений в сетке доступа.

0 голосов
/ 07 января 2019

Стоит отметить, что вы можете напрямую обращаться к PropertyBag VB6 из .NET, ссылаясь на библиотеку времени выполнения VB6 в своем проекте.

Добавить ссылку на: C:\WINDOWS\SysWow64\MSVBVM60.DLL (или может быть в папке System32)

и вы увидите PropertyBag в браузере объектов:

enter image description here

Обратите внимание, что этот класс VB6 не имеет функций для чтения / записи на дисковые файлы, байтовые массивы и т. Д. Он управляет только данными в памяти (AFAIK). Таким образом, это само по себе не решает проблему сохранения / загрузки данных в любом формате, в котором был сохранен PropertyBag.

...