Metodo para acceder a los campos de una clase

16/04/2009 - 12:12 por Vicente Nicolau | Informe spam
Buenas,

Me pregunto si existe algún étodo que devuelda los campos de una clase.
Idealmente debería devolver un vector de objetos. Por ejemplo, si deseo
obtener los campos que he declarado en una clase de tipo formulario,
escribiría:

Object[] o = this.SuperMethodThatReturnsReferencesToTheFields();

Necesito hacer esto poque en tiempo de ejecucion no se a qué campo debo
acceder (y necesito pornerlo a null)

Podria hacerlo con muchos ifs, pero cada vez que tuviese que añadir un nuevo
campo tendría que poner otro if, y no quea muy limpio. Seguro que hay alguna
forma más limpia.

He usado las clases MemberInfo y FieldInfo para obtener información de los
campos de las clases, pero no he visto la forma de acceder a los campos en
sí mismo para ponerlos a null.

Muchas gracias por vuestras aportaciones.
Saludos.

Preguntas similare

Leer las respuestas

#1 Alberto Poblacion
16/04/2009 - 13:09 | Informe spam
"Vicente Nicolau" wrote in message
news:
Me pregunto si existe algún étodo que devuelda los campos de una clase.
[...]
He usado las clases MemberInfo y FieldInfo para obtener información de los
campos de las clases, pero no he visto la forma de acceder a los campos en
sí mismo para ponerlos a null.



Se hace a través del propio FieldInfo. Una vez que ya lo has obtenido,
llamas a su método SetValue para asignarle el valor. Por ejemplo, para poner
null en todos los campos de un objeto:

MiClase obj = ;
Type t = obj.GetType();
FieldInfo[] fis = t.GetFields(BindingFlags.Public|BindingFlags.Private);
foreach (FieldInfo fi in fis)
{
fi.SetValue(obj, null);
}

Obviamente esto asume que todos los campos son tipos-referencia. Los
tipos-valor darían un error al meterles null.
Respuesta Responder a este mensaje
#2 Vicente Nicolau
16/04/2009 - 16:31 | Informe spam
perfecto! ya lo he resuelto!
muchas gracias =)


"Alberto Poblacion"
escribió en el mensaje news:
"Vicente Nicolau" wrote in message
news:
Me pregunto si existe algún étodo que devuelda los campos de una clase.
[...]
He usado las clases MemberInfo y FieldInfo para obtener información de
los campos de las clases, pero no he visto la forma de acceder a los
campos en sí mismo para ponerlos a null.



Se hace a través del propio FieldInfo. Una vez que ya lo has obtenido,
llamas a su método SetValue para asignarle el valor. Por ejemplo, para
poner null en todos los campos de un objeto:

MiClase obj = ;
Type t = obj.GetType();
FieldInfo[] fis = t.GetFields(BindingFlags.Public|BindingFlags.Private);
foreach (FieldInfo fi in fis)
{
fi.SetValue(obj, null);
}

Obviamente esto asume que todos los campos son tipos-referencia. Los
tipos-valor darían un error al meterles null.

email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida