Problema al redefinir una clase

17/02/2004 - 11:57 por Fadoyo | Informe spam
hola a todos, he creado una clase clsnodo heredada de treenode a la que le
añado una propiedad datarow para enlazar los nodos de un arbol con las filas
de una tabla.

el problema lo tengo que al montar el arbol hago una funcion recursiva donde
busco el nodo y mientras no encuentre llamo a la funcion para buscar en los
hijos del nodo que estoy buscando. Es algo asi:

Funcion Buscarnodo arbol(ID_ORIGEN, arbol a buscar){
If not(ID_ORIGEN=arbolabuscar.datarow.item(ID_FILA)) then
For Each NodoAuxRecorreArbol In Nodo_inicial.Nodes
If NodoAuxRecorreArbol.drT_DEP.Item("ID_FILA") = ID_Origen Then
'Encontrado el nodo
Return (NodoAuxRecorreArbol)
Else
'recorro los nodos de este nodo
For Each NodoAuxRecorrehijos In NodoAuxRecorreArbol.Nodes
Dim NODE As clsNodoDataRow
NODE = BuscarNodoArbol(ID_Origen,
NodoAuxRecorrehijos)
If Not (NODE Is Nothing) Then
Return (NODE)
Exit For
Else
'Return (Nothing)
End If
Next
End If
Next

Else
'Es el que busco.
Return(arbol_nodo_buscar)

}

El problema es que en la llamada recursiva paso en NodoAuxRecorrehijos de
tipo node y no de mi tipo clsnodo por lo que luego no puedo accer a la
propiedad datarow de la clase clsnodo. ¿Como puedo hacer que el bucle for
haga en el IN arbol.nodes y que ese nodes me devuelva objetos del tipo
clsnodo?

Muchas gracias por cualquier ayuda

Fadoyo
 

Leer las respuestas

#1 Ariel Popovsky
19/02/2004 - 16:11 | Informe spam
Por qué haces tu consulta de VB en el newsgroup de C#??

Igual te cuento que si bien estas accediendo a los objetos como Node, si son
ClsNode puedes hacer un cast (en VB se usa la función DirectCast creo) y a
partir de ahi acceder a todas sus propiedades.
Puedes preguntar si el objeto que estas evaluando es del tipo que esperas,
en C# preguntas
if(oNodo is clsnodo) ...
en VB no se como se hace.

Espero que te sirva, saludos!
Ariel Popovsky
Buenos Aires
"Fadoyo" wrote in message
news:
hola a todos, he creado una clase clsnodo heredada de treenode a la que le
añado una propiedad datarow para enlazar los nodos de un arbol con las


filas
de una tabla.

el problema lo tengo que al montar el arbol hago una funcion recursiva


donde
busco el nodo y mientras no encuentre llamo a la funcion para buscar en


los
hijos del nodo que estoy buscando. Es algo asi:

Funcion Buscarnodo arbol(ID_ORIGEN, arbol a buscar){
If not(ID_ORIGEN=arbolabuscar.datarow.item(ID_FILA)) then
For Each NodoAuxRecorreArbol In Nodo_inicial.Nodes
If NodoAuxRecorreArbol.drT_DEP.Item("ID_FILA") = ID_Origen Then
'Encontrado el nodo
Return (NodoAuxRecorreArbol)
Else
'recorro los nodos de este nodo
For Each NodoAuxRecorrehijos In NodoAuxRecorreArbol.Nodes
Dim NODE As clsNodoDataRow
NODE = BuscarNodoArbol(ID_Origen,
NodoAuxRecorrehijos)
If Not (NODE Is Nothing) Then
Return (NODE)
Exit For
Else
'Return (Nothing)
End If
Next
End If
Next

Else
'Es el que busco.
Return(arbol_nodo_buscar)

}

El problema es que en la llamada recursiva paso en NodoAuxRecorrehijos de
tipo node y no de mi tipo clsnodo por lo que luego no puedo accer a la
propiedad datarow de la clase clsnodo. ¿Como puedo hacer que el bucle for
haga en el IN arbol.nodes y que ese nodes me devuelva objetos del tipo
clsnodo?

Muchas gracias por cualquier ayuda

Fadoyo



Preguntas similares