Listado de Objetos en un Proyecto

06/05/2009 - 16:38 por Edilberto Arteaga | Informe spam
Hola a Todos.
Tendo un proyecto con varios formularios (WindowsForm) al cual tengo q
colocar seguridad a nivel de controles, por ejemplo indicar q controles de
los q tiene el formulario puede ver o editar un usuario, pero es algo
complicado ir formulario por formulario obtebiebdo el nombre de cada control
y manualmente colocarlo en una tabla de la base de datos... Hay alguna forma
de poder obtener de un proyecto todos cada uno de los objetos q
especifique.?
 

Leer las respuestas

#1 Alberto Poblacion
06/05/2009 - 21:45 | Informe spam
"Edilberto Arteaga" wrote in message
news:
Tendo un proyecto con varios formularios (WindowsForm) al cual tengo q
colocar seguridad a nivel de controles, por ejemplo indicar q controles de
los q tiene el formulario puede ver o editar un usuario, pero es algo
complicado ir formulario por formulario obtebiebdo el nombre de cada
control y manualmente colocarlo en una tabla de la base de datos... Hay
alguna forma de poder obtener de un proyecto todos cada uno de los objetos
q especifique.?




Puedes enumerar los formularios desde código mediante reflexión. La idea
es listar todos los tipos, y preguntarles uno por uno si heredan de
System.Windows.Forms. Por cada Form que encuentres, podrías enumerar sus
campos, examinar el tipo, y ver si heredan de Control. Con esto obtendrías
todos los controles. Sería algo parecido a lo siguiente:

using System.Reflection;
...
Assembly asm = Assembly.GetExecutingAssembly();
Module[] mods = asm.GetModules();
foreach (Module mod in mods)
{
Type[] tipos = mod.GetTypes();
foreach (Type tipo in tipos)
{
if (tipo.IsSubclassOf(typeof(Form)))
{
FieldInfo[] campos =
tipo.GetFields(BindingFlags.Public|BindingFlags.NonPublic);
foreach (FieldInfo campo in campos)
{
if (campo.FieldType.IsSubclassof(typeof(Control)))
{
//Este campo representa un Control
string nombre = campo.Name; //por ejemplo
...
}
}
}
}
}

Preguntas similares