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.
 

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.

Preguntas similares