.NET-взаимодействие в PowerBuilder - PullRequest
4 голосов
/ 09 мая 2009

Я ищу способ двусторонней связи между объектом PB и .NET (C #) объект. При взгляде на .NET-версию Брэда его GUI управления, я вижу, как дать объекту .NET ссылку на PB объект. Но в этом примере он приведен как PowerObject (в основном). Этот код C # вызывает только TriggerEvent () для объекта PB.

Я хочу создать пользовательский класс в C # с именем foo1. Я хочу создать метод на foo1 называется bar1 ().

Я хочу создать пользовательский класс в PB с именем foo2. Я хочу создать метод на foo2 называется bar2 ().

Я хочу иметь возможность создать экземпляр foo1 в foo2. я бы хотел быть в состоянии вызвать foo1.bar1 () из foo2.

(Я в порядке, пока здесь.)

Я хочу иметь возможность ссылаться на foo2 из foo1. Я хочу быть в состоянии вызвать foo2.bar2 () из foo1.

Ответы [ 3 ]

1 голос
/ 02 июня 2009

Я использовал эту идею для создания своего элемента управления C #, и он работал с вызовом из PB и Qt.

Предоставление формы Windows в качестве элемента управления ActiveX

Вы также можете посмотреть на P / Invoke

0 голосов
/ 28 мая 2009

PowerBuilder (версии 6, 7 и 8.0) правильно понимают только двоичные контракты, если вы хотите соединить объекты, написанные с использованием различных технологий. В действительности это означает COM-объекты с интерфейсом IDispatch (так называемый OleAutomation). Это те же самые объекты, которые могут использоваться интерпретируемыми языками, такими как VB6 или jscript (с wscript).

Вам не нужно иметь дело с ConnectionPoints, чтобы иметь асинхронную связь между объектами. Используйте свои собственные обычные интерфейсы.

Не используйте компилятор Watcom C ++ для создания каких-либо «прокси-объектов» - это был очень слабый компилятор несколько лет назад. Я пытался скомпилировать и построить какое-то решение, и оно показало много внутренних ошибок во время компиляции. Компилятор MS C ++ сделал компиляцию без проблем.

Помните, что ваши объекты должны быть совместимы с квартирами. PB использует только STA (однопотоковая квартира). Пожалуйста, проверьте это - может быть, что-то недавно изменилось.

0 голосов
/ 22 мая 2009

Я уверен, что есть более подходящий способ сделать это, но использование COM может быть самым простым.

Некоторые люди скажут, что COM никогда не является правильным ответом, но я говорю, используйте правильный инструмент для правильной работы.

...