Referencia de API
Documentación completa de la clase FoxBridge y los proxies de colección que genera dinámicamente.
Clase FoxBridge
La única clase que necesitas instanciar. Todos los demás objetos son proxies generados internamente.
Crear el puente y activarlo antes de usarlo
loBridge = NEWOBJECT("FoxBridge", "FoxBridge.prg")
IF !loBridge.Activate(lcJwt) && obligatorio: sin esto no funciona nada
? loBridge.GetLastError()
RETURN
ENDIF| Método / Propiedad | Retorna | Descripción |
|---|---|---|
Activate(jwt) | L (.T./.F.) | Activa la licencia con el JWT que te pasa tu propio código. Es obligatorio y se exige igual en el IDE y en el EXE: sin activar, cualquier llamada responde „FoxBridge is not activated“. Devuelve .F. si el JWT no vale y deja el motivo en GetLastError(); no lanza un ERROR de VFP. |
Create(typeName [, p1..p10]) | Proxy | Instancia un tipo .NET. typeName puede ser el nombre simple, un Qualified Assembly Name (con coma) o un tipo generico (List<String>). |
Static(typeName) | Proxy | Devuelve un proxy para acceder a los miembros estaticos de un tipo (métodos, propiedades, campos de clase). |
LoadAssembly(path) | L (.T./.F.) | Carga una DLL .NET en el contexto de ejecución. Necesario antes de Create() con tipos de esa DLL. |
GetLastError() | C | Devuelve el mensaje del último error de .NET. Se limpia al empezar cada llamada y se CONSUME al leerlo: la segunda lectura seguida ya viene vacía, así que guárdalo en una variable si lo necesitas dos veces. |
TypeExists(typeName) | L | Comprueba si un tipo existe sin lanzar excepción. Útil para detección segura de DLLs. |
GetObjectCount() | N | Número de objetos .NET vivos en el heap. Útil para detectar fugas de memoria. |
Version() | C | „FoxBridge Runtime 1.0.0 / Core …“. Es la forma de comprobar que la DLL nativa ha cargado y responde. |
RuntimeVersion() · CoreVersion() | C | Las dos mitades por separado: la versión de la capa VFP y la del motor .NET. |
SetProxyPath(path) | Carpeta donde se escriben las clases proxy generadas. Hay que llamarlo ANTES del primer Create(). | |
SetDebug(.T./.F.) | Activa la traza interna de llamadas. Sale por el canal del depurador, así que en los binarios publicados (compilados en Release) no imprime nada: para diagnosticar, GetLastError(). |
Objetos proxy (instancias .NET)
Cada objeto creado con Create() o Static() es un proxy de FoxBridge. Estos son los métodos universales disponibles en todos ellos.
| Método | Descripción |
|---|---|
MetodoNET([args]) | Cualquier método público del tipo .NET subyacente. FoxBridge resuelve sobrecargas automáticamente. |
.Propiedad | Lectura de cualquier propiedad publica. Si devuelve un objeto, el resultado es otro proxy. |
.Propiedad = valor | Escritura de propiedades de lectura/escritura. |
GetHandle() | Retorna el handle interno (entero) del objeto .NET. Útil para comparar si dos proxies apuntan al mismo objeto. |
Proxy de List<T> y Array
Cuando Create() detecta que el tipo es una lista o array, devuelve un proxy con esta interfaz.
| Método | Descripción |
|---|---|
Count() | Número de elementos de la colección. Es un método, con paréntesis. |
Item(n) | El VALOR del elemento en la posición n (base 1): cadena, número o .NULL. Para objetos, GetObject(n). |
GetObject(n) | El elemento como proxy. Es el que hay que usar cuando dentro de la colección hay objetos de .NET; Item(n) es para escalares. |
Add(valor) | Añade un elemento al final. |
Remove(valor) | Elimina la primera aparición del valor. Devuelve .T. si estaba. |
Proxy de Dictionary<K,V>
Cuando Create() detecta que el tipo es un diccionario, devuelve un proxy con esta interfaz.
| Método | Descripción |
|---|---|
Set(clave, valor) | Establece o sobrescribe una clave. |
Get(clave) | Devuelve el valor escalar de la clave, o .NULL. si ahí hay un nulo de .NET. |
GetObject(clave) | Devuelve el valor como proxy, para cuando el valor es un objeto de .NET. |
ContainsKey(clave) | Devuelve .T. si la clave existe. El método se llama ContainsKey; Contains() no existe. |
Remove(clave) | Elimina la clave y su valor. Devuelve .T. si la había. |
Manejo de errores
FoxBridge propaga las excepciones de .NET como errores de VFP. El patrón recomendado es TRY/CATCH.
Capturar con TRY/CATCH un tipo .NET que no existe
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 Recuerda liberar los proxies Cada proxy FoxBridge mantiene una referencia a un objeto en el heap .NET. Asignar = .NULL. libera esa referencia e invoca el GC de .NET.
Volver a ejemplos: Ejemplos ->