Como todos sabemos, VFP no ofrece una forma nativa de declarar ni aplicar interfaces, mas alla de la interaccion con objetos OLE.
La clase InterfaceHelper (
http://www.victorespina.com.ve/wiki/index.php?title=Implementacion_de_interfaces_en_VFP) ofrece una forma sencilla (aunque limitada) de lograr los beneficios del uso de interfaces en VFP.
Su uso es muy sencillo:
1) Se declara una variable publica que almacene una instanca de interfaceHelper:
PUBLIC goInterfaces && Puede ser cualquier nombre
goInterfaces = CREATE("interfaceHelper")
2) Se declaran las interfaces como clases derivadas de la clase Interface:
DEFINE CLASS IEnumerable AS Interface
Count = 0
DIMEN Items[1]
ENDDEFINE
3) Se publica la interfaz en el helper de interfaces:
goInterfaces.Declare("IEnumerable")
4) Se usa el metodo Implements del helper para determinar si un cierto objeto implementa una interfaz publicada:
IF goInterfaces.Implements(oData, "IEnumerable")
FOR i = 1 TO oData.Count
...
ENDFOR
ENDIF
En el caso de versiones de VFP anterior a la 9, no es posible declarar las interfaces mediante subclases de Interface, pero aun asi puede hacerse manualmente:
goInterfaces.Declare("IEnumerable","count,items")
Saludos
Victor Espina