Marshalling

30/08/2004 - 18:01 por AJPB | Informe spam
Tengo las siguientes clases en un Modulo

Class MiClaseA
Public ClaseHija as New MiClaseB
End Class

Class MiClaseB
Public ValorB as Integer = 100
End Class

Ahora, tengo un control al cual le puedo pasar
MiClaseA.ClaseHija por referencia

Class MiControl

Public Clase as Object

Sub UsarClase(ByRef CualquierClase as Object)
Clase = CualquierClase
End Sub

End Class

Por lo tanto digo:

MiControl(MiClaseA.MiClaseHija)

Y luego puedo ver el ValorB usando MiControl

TextBox1.text = MiControl.Clase.ValorB ( Muestra 100 )

El problema viene ahora, hago un Marshal

Marshal.PtrToStructure(pMem,MiClaseA) donde hay un nuevo
valor para ValorB digamos 50

asi que:

TextBox1.text = MiControl.Clase.ValorB deberia mostrarme
50, pero no... sigue el 100!

pero en cambio si digo:

TextBox1.text = MiClaseA.MiClaseHija.ValorB si veo el
nuevo valor, el 50!

Es como si despues del Marshal tuviese otra referencia
nueva a MiClase, diferente a la de MiControl que sigue
usando la vieja, tengo que volver a pasarle la clase para
que funcione:

MiControl(MiClaseA.MiClaseHija)

No quiero hacer eso, quiero que despues del Marshal
MiControl vea el nuevo dato en MiClase sin tener que
pasarle la clase otra vez

Alguna idea?

Gracias

AJPB
 

Leer las respuestas

#1 Eduardo A. Morcillo [MS MVP VB]
30/08/2004 - 19:07 | Informe spam
¿Por que estas haciendo esto?

Marshal.PtrToStructure(pMem,MiClaseA)



Eduardo A. Morcillo [MS MVP VB]
http://www.mvps.org/emorcillo

Preguntas similares