API-Referenz
Vollstandige Dokumentation der FoxBridge-Klasse und der dynamisch generierten Sammlungs-Proxys.
FoxBridge-Klasse
Die einzige Klasse, die Sie instanziieren mussen. Alle anderen Objekte sind intern generierte Proxys.
loBridge = NEWOBJECT("FoxBridge", "FoxBridge.prg") | Methode / Eigenschaft | Ruckgabe | Beschreibung |
|---|---|---|
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 zuruck, um auf statische Mitglieder eines Typs zuzugreifen. |
LoadAssembly(path) | L (.T./.F.) | Ladt eine .NET-DLL in den Ausfuhrungskontext. Erforderlich vor Create() mit Typen dieser DLL. |
GetLastError() | C | Gibt die letzte .NET-Fehlermeldung zuruck. Wird nach jedem erfolgreichen Aufruf automatisch geleert. |
TypeExists(typeName) | L | Pruft ob ein Typ existiert, ohne eine Ausnahme auszulosen. Nutzlich fur die sichere DLL-Erkennung. |
GetObjectCount() | N | Anzahl der lebenden .NET-Objekte im Heap. Nutzlich zur Erkennung von Speicherlecks. |
Ping() | C ("Pong") | Pruft ob die native DLL geladen ist und antwortet. Zur Diagnose beim Start verwenden. |
SetDebug(.T./.F.) | Aktiviert/deaktiviert das detaillierte Protokoll der nativen DLL-Aufrufe (sichtbar in DebugView). |
Proxy-Objekte (.NET-Instanzen)
Jedes mit Create() oder Static() erstellte Objekt ist ein FoxBridge-Proxy. Dies sind die universellen Methoden, die auf allen Proxys verfugbar sind.
| Methode | Beschreibung |
|---|---|
MetodoNET([args]) | Jede offentliche Methode des zugrunde liegenden .NET-Typs. FoxBridge lost Uberladungen automatisch auf. |
.Propiedad | Lesen einer beliebigen offentlichen Eigenschaft. Wenn sie ein Objekt zuruckgibt, ist das Ergebnis ein weiterer Proxy. |
.Propiedad = valor | Schreiben von Lese-/Schreib-Eigenschaften. |
GetHandle() | Gibt das interne Handle (Ganzzahl) des .NET-Objekts zuruck. Nutzlich um zu prufen ob zwei Proxys auf dasselbe Objekt zeigen. |
List<T>- und Array-Proxy
Wenn Create() erkennt, dass der Typ eine Liste oder ein Array ist, gibt es einen Proxy mit dieser Schnittstelle zuruck.
| Methode | Beschreibung |
|---|---|
Count() | Anzahl der Elemente in der Sammlung. |
Item(n) | Element an Position n (1-basiert). Gibt Skalar oder Proxy zuruck, je nach Typ. |
GetObject(n) | Wie Item(n), gibt aber garantiert einen Proxy zuruck, auch wenn das Element ein Skalar ist. Verwenden wenn das Element ein .NET-Objekt ist. |
Add(valor) | Fugt ein Element am Ende hinzu. |
Remove(valor) | Entfernt das erste Vorkommen des Werts. |
Dictionary<K,V>-Proxy
Wenn Create() erkennt, dass der Typ ein Dictionary ist, gibt es einen Proxy mit dieser Schnittstelle zuruck.
| Methode | Beschreibung |
|---|---|
Set(clave, valor) | Setzt oder uberschreibt einen Schlussel. |
Get(clave) | Gibt den skalaren Wert des Schlussels zuruck. |
GetObject(clave) | Gibt den Wert als Proxy zuruck (wenn der Wert ein .NET-Objekt ist). |
Contains(clave) | Gibt .T. zuruck wenn der Schlussel existiert. |
Remove(clave) | Entfernt den Schlussel und seinen Wert. |
Fehlerbehandlung
FoxBridge propagiert .NET-Ausnahmen als VFP-Fehler. Das empfohlene Muster ist TRY/CATCH.
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 halt eine Referenz auf ein Objekt im .NET-Heap. Das Zuweisen von = .NULL. gibt diese Referenz frei und ruft den .NET-GC auf.
Zuruck zu den Beispielen: Beispiele ->