IR
irwinrodriguez.dev
Zurück zur Dokumentation

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 ->