Limpiar propiedades objeto...

27/03/2006 - 23:25 por Hugo Gsell | Informe spam
Tengo una clase que representa digamos una persona (y en general tengo n
clases que representan objetos de este tipo: personas, animales,
zonasgeográficas, cada una con sus propiedades y de <>tipos string,
intenger, etc

Class Persona
Private mvarNombre As String
Public Property Nombre() As String
Get
Nombre = ConvierteTexto(mvarNombre)
End Get
Set(ByVal Value As String)
mvarNombre = Value
End Set
End Property
End Class

quiero implementar una función (clase) que pasando como parámetro como
object tipo Persona (en mi ejemplo) recorra cada propiedad y la establezca a
su valor vacio, es decir, si es string a "" si es numerico a 0, etc
algo así como con un for each recorrer cada propiedad... y dependiendo del
tipo inicilaizarla con algún valor.
Se puede?


Hugo A. Gsell
Sgo del Estero
Argentina

Preguntas similare

Leer las respuestas

#1 Eduardo A. Morcillo [MS MVP VB]
28/03/2006 - 00:39 | Informe spam
¿No seria mas simple hacer un New Persona()? Claro que lo que dices puede
hacerse pero es con Reflection y pero si la idea era ahorrarse la creacion
de una nueva instancia con reflection seria mas costoso en terminos de
memoria y tiempo.

Eduardo A. Morcillo [MS MVP VB]
http://www.mvps.org/emorcillo
http://mvp.support.microsoft.com/pr...4EF5A4191C
Respuesta Responder a este mensaje
#2 José Manuel Agüero
28/03/2006 - 00:52 | Informe spam
Hola, Hugo:

Opino como Eduardo, pero si quieres usar reflexión, mira este ejemplo:

Sub LimpiarPersona(ByVal objeto as Persona)
Dim tipo As Type = objeto.GetType

For Each pi As System.Reflection.PropertyInfo In tipo.GetProperties

MsgBox(pi.PropertyType.ToString)

If pi.CanWrite Then

pi.SetValue(objeto, Nothing, Nothing)

End If

Next

End Sub



Saludos.





"Hugo Gsell" escribió en el mensaje news:
| Tengo una clase que representa digamos una persona (y en general tengo n
| clases que representan objetos de este tipo: personas, animales,
| zonasgeográficas, cada una con sus propiedades y de <>tipos string,
| intenger, etc
|
| Class Persona
| Private mvarNombre As String
| Public Property Nombre() As String
| Get
| Nombre = ConvierteTexto(mvarNombre)
| End Get
| Set(ByVal Value As String)
| mvarNombre = Value
| End Set
| End Property
| End Class
|
| quiero implementar una función (clase) que pasando como parámetro como
| object tipo Persona (en mi ejemplo) recorra cada propiedad y la establezca a
| su valor vacio, es decir, si es string a "" si es numerico a 0, etc
| algo así como con un for each recorrer cada propiedad... y dependiendo del
| tipo inicilaizarla con algún valor.
| Se puede?
|
|
| Hugo A. Gsell
| Sgo del Estero
| Argentina
Respuesta Responder a este mensaje
#3 Hugo Gsell
28/03/2006 - 01:22 | Informe spam
La idea es que si digamos... estas clases representan por ejemplo una
estructura de registro de una tabla... ya agrego un campo no tenga que
reveer las partes donde limpio el registro, tu dices en el new... pero
si utilizo esta "estructura" para mostrar datos en una ventana... la
instancia digamos la puedo crear en el load de mi form... y cuando deseo
"limpiar" los datos que hay adentro... deberé llamar a alguna rutina que lo
haga... una por cada clase de este tipo... en cambio si creo una "clase
generica" que se llame LIMPIAR y como parámetro le paso el registro y esta
clase se encarga de "limpiar" cada campo.. ESO ES LO QUE QUIERO.



"Eduardo A. Morcillo [MS MVP VB]" <emorcillo .AT. mvps.org> escribió en el
mensaje news:%
¿No seria mas simple hacer un New Persona()? Claro que lo que dices puede
hacerse pero es con Reflection y pero si la idea era ahorrarse la creacion
de una nueva instancia con reflection seria mas costoso en terminos de
memoria y tiempo.

Eduardo A. Morcillo [MS MVP VB]
http://www.mvps.org/emorcillo
http://mvp.support.microsoft.com/pr...4EF5A4191C

Respuesta Responder a este mensaje
#4 Eduardo A. Morcillo [MS MVP VB]
28/03/2006 - 04:12 | Informe spam
¿Pero no puedes volver a instanciar la clase en el form en un evento click
(o donde sea)? Yo sigo sin verle mucho sentido a lo que quieres hacer pero
en el mensaje de Jose muestra como recorres y seteas las propiedades con
Reflection que es bastante simple pero si tienes que inicializar propiedades
a valores que no sean el valor por defecto del tipo ya se te va a complicar
bastante.

Eduardo A. Morcillo [MS MVP VB]
http://www.mvps.org/emorcillo
http://mvp.support.microsoft.com/pr...4EF5A4191C
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida