Интерфейс VB6 в .Net - что такое тип данных VB6 на долгое время? - PullRequest
1 голос
/ 03 января 2011

У меня есть объект .Net с методом и интерфейсом. Интерфейс ожидает, что один из параметров будет иметь тип long.
Проблема в том, что Long по vb6 не Long по .net. это не та же длина, поэтому моя программа vb6 не может сейчас вызвать мой объект .net. Я не могу сломать интерфейс в .net, чтобы внести это изменение в int, потому что все клиенты, которые его используют, пострадают от этого.

Какие-нибудь креативные идеи?

TY

Ответы [ 2 ]

2 голосов
/ 03 января 2011

Прямого эквивалента нет.Ваша дилемма обсуждается и решения приведены здесь:

http://www.thescarms.com/vbasic/vb6vsvbnet.aspx

Большинство API, которые принимают числовые аргументы, ожидают 32-битные значения.В VB6 это тип данных Long.В VB.NET long является 64-битным и не будет работать с 32-битными вызовами API.Параметры API .NET необходимо изменить или привести к типу данных Integer до вызова API.

Многие API больше не будут вызываться из VB, а другие будут заменены.Некоторым, которые передают строки, потребуется настроить для передачи правильной строки или значения Null.Обратитесь к справке VB.NET за дополнительной информацией. API

необходимо будет обрабатывать в каждом конкретном случае.Лучше всего изолировать все вызовы API, поэтому изменения нужно вносить только в одном месте в вашем коде.Инструмент обновления попытается преобразовать вызовы API, создав для них оболочки.Однако потребуется ручное вмешательство.

2 голосов
/ 03 января 2011

Без дополнительных подробностей, короткий ответ заключается в том, что вы оборачиваете объект .NET в другой объект, который принимает параметр, который может передать из VB6, а затем преобразует его в long при необходимости при вызове. метод на существующий объект.

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

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