API-Referenz
Vollständige Dokumentation der FoxBridge-Klasse und der dynamisch erzeugten Sammlungs-Proxys.
FoxBridge-Klasse
Die einzige Klasse, die Sie instanziieren müssen. Alle anderen Objekte sind intern erzeugte Proxys.
Bridge erzeugen und vor der Nutzung freischalten
loBridge = NEWOBJECT("FoxBridge", "FoxBridge.prg")
IF !loBridge.Activate(lcJwt) && obligatorio: sin esto no funciona nada
? loBridge.GetLastError()
RETURN
ENDIF| Methode / Eigenschaft | Rückgabe | Beschreibung |
|---|---|---|
Activate(jwt) | L (.T./.F.) | Schaltet die Lizenz mit dem JWT frei, das Ihr eigener Code übergibt. Zwingend, und in der IDE wie in der EXE gleichermaßen verlangt: ohne Freischaltung antwortet jeder Aufruf mit „FoxBridge is not activated“. Liefert .F., wenn das JWT ungültig ist, und hinterlegt den Grund in GetLastError(); es löst keinen VFP-ERROR aus. |
Create(typeName [, p1..p10]) | Proxy | Instanziiert einen .NET-Typ. typeName kann ein einfacher Name, ein qualifizierter Assembly-Name (mit Komma) oder ein generischer Typ sein. |
Static(typeName) | Proxy | Gibt einen Proxy zurück, um auf statische Mitglieder eines Typs zuzugreifen. |
LoadAssembly(path) | L (.T./.F.) | Lädt eine .NET-DLL in den Ausfuhrungskontext. Erforderlich vor Create() mit Typen dieser DLL. |
GetLastError() | C | Liefert die letzte .NET-Fehlermeldung. Sie wird zu Beginn jedes Aufrufs geleert und beim Lesen VERBRAUCHT: die zweite Lesung direkt danach kommt leer zurück, heben Sie den Text also in einer Variablen auf, wenn Sie ihn zweimal brauchen. |
TypeExists(typeName) | L | Prüft ob ein Typ existiert, ohne eine Ausnahme auszulosen. Nutzlich für die sichere DLL-Erkennung. |
GetObjectCount() | N | Anzahl der lebenden .NET-Objekte im Heap. Nutzlich zur Erkennung von Speicherlecks. |
Version() | C | „FoxBridge Runtime 1.0.0 / Core …“. So prüfen Sie, dass die native DLL geladen ist und antwortet. |
RuntimeVersion() · CoreVersion() | C | Die beiden Hälften einzeln: die Version der VFP-Schicht und die des .NET-Motors. |
SetProxyPath(path) | Ordner, in den die erzeugten Proxy-Klassen geschrieben werden. Muss VOR dem ersten Create() aufgerufen werden. | |
SetDebug(.T./.F.) | Schaltet die interne Aufrufverfolgung ein. Sie geht über den Debugger-Kanal, in den veröffentlichten Binärdateien (Release-Build) erscheint also nichts: zur Diagnose dient GetLastError(). |
Proxy-Objekte (.NET-Instanzen)
Jedes mit Create() oder Static() erzeugte Objekt ist ein FoxBridge-Proxy. Dies sind die universellen Methoden, die auf allen Proxys verfügbar sind.
| Methode | Beschreibung |
|---|---|
MetodoNET([args]) | Jede öffentliche Methode des zugrunde liegenden .NET-Typs. FoxBridge löst Uberladungen automatisch auf. |
.Propiedad | Lesen einer beliebigen öffentlichen Eigenschaft. Wenn sie ein Objekt zurückgibt, ist das Ergebnis ein weiterer Proxy. |
.Propiedad = valor | Schreiben von Lese-/Schreib-Eigenschaften. |
GetHandle() | Gibt das interne Handle (Ganzzahl) des .NET-Objekts zurück. Nutzlich um zu prüfen ob zwei Proxys auf dasselbe Objekt zeigen. |
List<T>- und Array-Proxy
Wenn Create() erkennt, dass der Typ eine Liste oder ein Array ist, liefert es einen Proxy mit dieser Schnittstelle.
| Methode | Beschreibung |
|---|---|
Count() | Anzahl der Elemente der Sammlung. Eine Methode, mit Klammern. |
Item(n) | Der WERT des Elements an Position n (1-basiert): Zeichenkette, Zahl oder .NULL. Für Objekte: GetObject(n). |
GetObject(n) | Das Element als Proxy. Er ist zu verwenden, wenn in der Sammlung .NET-Objekte liegen; Item(n) ist für Skalare. |
Add(valor) | Fügt ein Element am Ende hinzu. |
Remove(valor) | Entfernt das erste Vorkommen des Werts. Liefert .T., wenn er vorhanden war. |
Dictionary<K,V>-Proxy
Wenn Create() erkennt, dass der Typ ein Dictionary ist, liefert es einen Proxy mit dieser Schnittstelle.
| Methode | Beschreibung |
|---|---|
Set(clave, valor) | Setzt oder überschreibt einen Schlüssel. |
Get(clave) | Liefert den skalaren Wert des Schlüssels, oder .NULL., wenn dort ein .NET-Null liegt. |
GetObject(clave) | Liefert den Wert als Proxy, für den Fall, dass der Wert ein .NET-Objekt ist. |
ContainsKey(clave) | Liefert .T., wenn der Schlüssel vorhanden ist. Die Methode heißt ContainsKey; Contains() gibt es nicht. |
Remove(clave) | Entfernt den Schlüssel und seinen Wert. Liefert .T., wenn es ihn gab. |
Fehlerbehandlung
FoxBridge propagiert .NET-Ausnahmen als VFP-Fehler. Das empfohlene Muster ist TRY/CATCH.
Einen nicht existierenden .NET-Typ mit TRY/CATCH abfangen
TRY
loObj = loBridge.Create("Tipo.Que.No.Existe")
loObj.HacerAlgo()
CATCH TO loEx
? "Tipo de error:", loEx.ErrorNo
? "Mensaje: ", loEx.Message && contiene el mensaje de .NET
? "Ultimo error: ", loBridge.GetLastError()
ENDTRY Denken Sie daran Proxys freizugeben Jeder FoxBridge-Proxy hält eine Referenz auf ein Objekt im .NET-Heap. Das Zuweisen von = .NULL. gibt diese Referenz frei und ruft den .NET-GC auf.
Zurück zu den Beispielen: Beispiele ->