Каков наилучший способ использования классов .NET из Visual Basic 6? - PullRequest
5 голосов
/ 18 декабря 2008

На своем рабочем месте я застрял с Visual Basic 6, но после прочтения ответа на « Как сортировать массивы с помощью vbscript? » Я вселил надежду, что по крайней мере некоторые из отсутствующих функций VB6 могут быть дополнены функциями .NET. (Разные виды коллекций, в основном)

Похоже, что по крайней мере некоторые классы .NET доступны для сценариев и могут использоваться от VB6 до CreateObject. Но у меня появляется отчетливое чувство «хорошо, чтобы быть правдой», так что ...

  • Могу ли я столкнуться с подводными камнями? (Кроме того, должен быть установлен .NET)
  • Доступны ли все классы .NET через CreateObject?
  • Есть ли способ импортировать эти классы в мой проект VB6, чтобы я мог использовать IntelliSense?
  • Есть ли у вас какие-либо общие предложения относительно этого подхода?

Ответы [ 4 ]

6 голосов
/ 18 декабря 2008

Информацию можно найти в VB Fusion Developer Center по MSDN . Особый интерес будет Использование библиотеки классов .NET Framework из Visual Basic 6 и Могу ли я заинтересовать вас 5000 классами? .

Вам нужно написать некоторый код в .NET, чтобы использовать методы, описанные в статьях. Если у вас еще нет Visual Studio 2008, вы можете бесплатно загрузить Visual Basic 2008 Express .

2 голосов
/ 18 декабря 2008

От работы над конверсией для моей компании CAD / CAM приложения. Я не рекомендую идти снизу вверх, т.е. заменять основную DLL или добавлять основные функции через .NET.

У меня были намного лучшие результаты, работая сверху вниз, начиная с замены форм и заканчивая Core DLL.

Самым большим препятствием было предоставление подходящего принтера и графического интерфейса. Но выпуск Microsoft комплекта совместимости принтеров решил обе проблемы. К счастью, когда .NET был лишь проблеском на горизонте, я поместил все ориентированные на VB6 графические и печатные вызовы за интерфейс.

Снова начните с замены формата на сборку .NET, вызывающую ваши основные библиотеки COMM.

Если ваша логика переплетена с формами, я настоятельно рекомендую разделить ее на новую COM DLL В ВИЗУАЛЬНОЙ ОСНОВНОЙ ШЕСТИ. Пусть новая DLL взаимодействует с формой через интерфейс. Форма будет тонкой оболочкой, передающей события в DLL и выполняющей различные операции (рисование, переупорядочение и т. Д.

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

Например, мы хотели добавить программное обеспечение для управления офисом / работой для нашей отрасли в ассортимент программного обеспечения, которое мы продаем. Мы решили реализовать с помощью .NET Framework. Он должен был взаимодействовать с нашим программным обеспечением CAD / CAM, поэтому мы создаем серию интерфейсов, каждый из которых может извлекать необходимую информацию или запускать действия друг у друга.

Наконец, если классы .NET реализуют COM-интерфейсы, большая проблема заключается в том, что вам нужно убедиться, что любые параметры, являющиеся частью свойств в COM, должны быть объявлены ByVal, иначе .NET не сможет реализовать свойство и не сможет реализовать интерфейс. Это включает в себя параметр значения Let или Set

1 голос
/ 18 декабря 2008

Может быть это полезно:

Используя доступную информацию, многие из классов, найденных в MS .NET mscorlib.dll, были воспроизведены в Visual Basic 6. Это НЕ реализация среды выполнения CLI, только некоторые классы unitlity, которые есть в mscorlib .dll файл библиотеки.

0 голосов
/ 18 декабря 2008

Взаимодействие следует использовать только в качестве механизма для передачи данных между системами, а не для базового логического кода; снижение производительности всего сортировки и т. д. будет слишком большим. Я предлагаю вам взглянуть на использование более свежих вариантов VB в VS2008 и т. Д. Это большой сдвиг, но если вы можете позволить себе внести изменения, вы не пожалеете об этом.

Лично, когда я перешел с VB6, я переключился на C #, но это решение должно основываться на локальном контексте и т. Д.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...