Comunidad Gambas-es
Extender una clase - Versión para impresión

+- Comunidad Gambas-es (https://gambas-es.org)
+-- Foro: Gambas (https://gambas-es.org/forum-3.html)
+--- Foro: General (https://gambas-es.org/forum-4.html)
+--- Tema: Extender una clase (/thread-1420.html)



Extender una clase - Shell - 27-06-2023

Buenas!.

Se que se ha hablado alguna vez. Pero ahora no lo encuentro.

En su día hice una clase que extendía la clase collection , el problema fue que dio error, método de clase mal sobre escrita o algo parecido.

Lo que no puedo asegurar es si el método no existía y luego fue añadido en el editor de Gambas.

Esta es la nueva clase collection. Un trozo de la misma. Donde veis el método Keys2, se llamaba antes Keys.
Y por eso daba error.

Código:
Inherits Collection

Private clavevalor As New Collection
Private valorclave As New Collection

Public Sub _new(diccionario As Collection)
 
  clavevalor = diccionario
   
End

Public Function Keys2() As String[] ''Devuelve todas las llaves de la colección en un array
 
  Dim claves As New String[]
  Dim v As String
 
  For Each v In clavevalor
    claves.Add(clavevalor.Key)
  Next
  Return claves
 
End

Para hacerlo funcionar tuve que renombrarlo.

Ahora os propongo este problema.

Imaginar que heredáis de una clase nativa y añadís un método que "no existe", pero con el tiempo el editor de Gambas crea otro que se llama igual.
¿ Saben lo que significa eso ?. Sad

¿ Es posible averiguar si el método ya existe antes en el editor y en caso contrario usar el personalizado ?.
Creo que sí. Pero significa que antes de usar "cada" método personalizado, debe consultarse si existe uno similar. ( No veas que rollo ).

Saludos