2009-05-08 9 views
4

Ich bin auf der Suche nach einer Möglichkeit, bidirektionale Kommunikation zwischen einem PB-Objekt und einem .NET (C#) -Objekt zu tun. Beim Betrachten der Brads .NET-Version seiner GUI-Steuerelemente sehe ich, wie man dem .NET-Objekt einen Verweis auf das Objekt PB gibt. Aber in diesem Beispiel wird es (im Grunde genommen) als PowerObject umgewandelt. Dieser C# -Code ruft nur TriggerEvent() für das PB-Objekt auf..NET Interop in PowerBuilder

Ich möchte eine benutzerdefinierte Klasse in C# namens foo1 erstellen. Ich möchte eine Methode auf foo1 namens bar1() erstellen.

Ich möchte eine benutzerdefinierte Klasse in PB namens foo2 erstellen. Ich möchte eine Methode auf foo2 namens bar2() erstellen.

Ich möchte eine Instanz von foo1 in foo2 erstellen können. Ich möchte in der Lage sein, foo1.bar1() von foo2 aus aufzurufen.

(Ich bin gut, bis hier.)

Ich möchte in der Lage sein foo2 zu verweisen aus foo1. Ich möchte in der Lage foo2.bar2() aus foo1 aufrufen.

+0

Was ist Ihre PB-Version? –

Antwort

0

Ich bin mir sicher, es gibt eine bessere Möglichkeit, dies zu tun, aber die Verwendung von COM könnte am einfachsten sein.

würde Manche Leute sagen, dass COM nie die richtige Antwort ist, aber ich sage das richtige Werkzeug für den richtigen Job verwenden.

0

PowerBuilder (Version 6, 7 und 8.0) verstehen nur BINARY-Verträge, wenn Sie Objekte in verschiedenen Technologien verbinden möchten. In Wirklichkeit bedeutet es COM-Objekte mit IDispatch-Schnittstelle (sog. OleAutomation). Es ist die gleiche Art von Objekten, die von interpretierten Sprachen wie VB6 oder jscript (mit wscript) verwendet werden können.

Sie müssen sich nicht mit ConnectionPoints befassen, um eine asynchrone Kommunikation zwischen Objekten zu haben. Verwenden Sie Ihre eigenen regulären Schnittstellen.

Verwenden Sie nicht Watcom C++ - Compiler, um irgendwelche "Proxy-Objekte" zu bauen - es war sehr schwach Compiler vor ein paar Jahren. Ich habe versucht, eine Lösung zu kompilieren und zu erstellen, und es hat viele interne Fehler während des Kompilierens gezeigt. Der MS C++ - Compiler hat die Kompilierung ohne Probleme durchgeführt.

Denken Sie daran, dass Ihre Objekte Apartment-kompatibel sein sollten. PB verwendet nur STA (Single Threaded Apartment). Bitte überprüfen Sie es - vielleicht hat sich in letzter Zeit etwas geändert.