Discussion:
Metodo para acceder a los campos de una clase
(demasiado antiguo para responder)
Vicente Nicolau
2009-04-16 10:19:18 UTC
Permalink
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.
Ivan Freire
2009-04-18 04:56:01 UTC
Permalink
En www.codeproject.com esta éste artículo

http://www.codeproject.com/KB/dotnet/asmex.aspx

ahi te indica como obtener la información que necesites de un assembly
Post by Vicente Nicolau
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,
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.
José Luis
2009-04-18 10:24:45 UTC
Permalink
Object o = xxxxx...;

Type t = o.GetType();

foreach (PropertyInfo pi in t.GetProperties())
{
pi.SetValue(o, null, null);
}


saludos
Post by Vicente Nicolau
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,
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.
bialguos
2009-06-21 19:01:01 UTC
Permalink
Lo mejor es realizarlo por Reflection como han comentado en las anteriore, en
esta dirección tienes una pequeña introduccion para que comprendas el
significado

http://danielggarcia.wordpress.com/2009/05/17/introduccion-a-reflection-recorriendo-los-elementos-de-un-objeto/

Saludos Oskar
Post by Vicente Nicolau
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,
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.
Loading...