propiedades de controles con reflection

03/03/2006 - 21:18 por Robinson | Informe spam
Hola,

Tengo q crear una clase con la cual recorra las paginas de una aplicacion
web y capture los controles ( con el nombre y el texto del control).. para
ello uso reflection.

Entonces tomo el assembly y obtengo los tipos (Assembly.GetTypes)... recorro
esos tipos si el tipo es una pagina busco y recorro los controles con
Type.GetFields() y recorro los controles hasta ahi todo funciona bien... pero
no puedo ver las propiedades de esos controles.
Se que se puede obtener el control Creando un instacia del typo
(Activator.CreateInstance(<Tipo>,BindingFlags,.)) y buscarlo por medio de
fieldInfo.GetValue(<pagina instanciada>)...Pero no funcionasi coloco un
ounto de interrupcion y hago click derecho sobre la pagina instanciada y
eligo QuickWatch y puedo ver los controles pero su valor es <undefined
value>

Pienso que algo me falta al instanciar la pagina por que me trae los
controles pero con el valor <undefined value>

Agradeceria su ayuda..
 

Leer las respuestas

#1 Miguel Angel Campos
07/03/2006 - 09:40 | Informe spam
Hola Robinson,

según creo entender de tu explicación buscas los tipos definidos en un
assembly, detectas si son del tipo System.Web.UI.Page, o derivados de este,
y creas una instancia de ellos mediante Activator.CreateInstance.

Todos estos pasos serían correctos para lo que quieres en una aplicación
Windows, buscando los tipos de derivan de Form, porque toda la información
visual de los controles que contiene con creadas en el constructor por
defecto de dicho tipo. El problema con las aplicaciones Web es que te estas
saltando gran parte del trabajo que hace ASP.NET. Te lo detallo por encima:
- Un cliente hace una petición de una pagina, por ejemplo Default.aspx
- El motor de ASP.NET busca el fichero (paso por alto todo el tema de
HttpHandler, etc.) detecta que este fichero depende de un Assembly, donde
está definido el código y carga este assembly.
- A continuación enlaza las variables miembros definidas en la clase con las
instancias definidas en el fichero con extensión ASPX.
- El motor de ASP.NET es el encargado de llamar a los eventos OnInit,
OnLoad, etc donde se realiza parte de la lógica de la aplicación.

Despues de esta larga explicación, que espero que haya servido de algo,
tienes que tener claro que lo que quieres hacer no se puede hacer de esa
forma.
Lo triste por mi parte es que no te puedo recomendarte una solución a tu
problema, por lo menos sencilla que son las buenas soluciones, espero que
alguien del foro te ilumine.

Un Saludo,

Miguel Angel Campos
MCSD.NET

"Robinson" escribió en el mensaje
news:
Hola,

Tengo q crear una clase con la cual recorra las paginas de una aplicacion
web y capture los controles ( con el nombre y el texto del control).. para
ello uso reflection.

Entonces tomo el assembly y obtengo los tipos (Assembly.GetTypes)...
recorro
esos tipos si el tipo es una pagina busco y recorro los controles con
Type.GetFields() y recorro los controles hasta ahi todo funciona bien...
pero
no puedo ver las propiedades de esos controles.
Se que se puede obtener el control Creando un instacia del typo
(Activator.CreateInstance(<Tipo>,BindingFlags,.)) y buscarlo por medio
de
fieldInfo.GetValue(<pagina instanciada>)...Pero no funcionasi coloco
un
ounto de interrupcion y hago click derecho sobre la pagina instanciada y
eligo QuickWatch y puedo ver los controles pero su valor es <undefined
value>

Pienso que algo me falta al instanciar la pagina por que me trae los
controles pero con el valor <undefined value>

Agradeceria su ayuda..






Preguntas similares