IR
irwinrodriguez.dev
Volver a documentacion

Referencia de API

Documentacion completa de la clase FoxBridge y los proxies de coleccion que genera dinamicamente.

Clase FoxBridge

La unica clase que necesitas instanciar. Todos los demas objetos son proxies generados internamente.

loBridge = NEWOBJECT("FoxBridge", "FoxBridge.prg")
Metodo / Propiedad Retorna Descripcion
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 (metodos, propiedades, campos de clase).
LoadAssembly(path) L (.T./.F.) Carga una DLL .NET en el contexto de ejecucion. Necesario antes de Create() con tipos de esa DLL.
GetLastError() C Retorna el mensaje del ultimo error .NET. Se limpia automaticamente tras cada llamada exitosa.
TypeExists(typeName) L Comprueba si un tipo existe sin lanzar excepcion. Util para deteccion segura de DLLs.
GetObjectCount() N Numero de objetos .NET vivos en el heap. Util para detectar fugas de memoria.
Ping() C ("Pong") Verifica que la DLL nativa esta cargada y responde. Usar al inicio para diagnostico.
SetDebug(.T./.F.) Activa/desactiva el log detallado de llamadas a la DLL nativa (visible en DebugView).

Objetos proxy (instancias .NET)

Cada objeto creado con Create() o Static() es un proxy FoxBridge. Estos son los metodos universales disponibles en todos los proxies.

Metodo Descripcion
MetodoNET([args]) Cualquier metodo publico del tipo .NET subyacente. FoxBridge resuelve sobrecargas automaticamente.
.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. Util 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.

Metodo Descripcion
Count()Numero de elementos en la coleccion.
Item(n)Elemento en posicion n (base-1). Devuelve escalar o proxy segun el tipo.
GetObject(n)Como Item(n) pero garantiza devolver un proxy aunque el elemento sea un escalar. Usar cuando el elemento es un objeto .NET.
Add(valor)Agrega un elemento al final.
Remove(valor)Elimina la primera ocurrencia del valor.

Proxy de Dictionary<K,V>

Cuando Create() detecta que el tipo es un diccionario, devuelve un proxy con esta interfaz.

Metodo Descripcion
Set(clave, valor)Establece o sobreescribe una clave.
Get(clave)Retorna el valor escalar de la clave.
GetObject(clave)Retorna el valor como proxy (cuando el valor es un objeto .NET).
Contains(clave)Retorna .T. si la clave existe.
Remove(clave)Elimina la clave y su valor.

Manejo de errores

FoxBridge propaga las excepciones .NET como errores VFP. El patron recomendado es 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
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 ->