public static List <EntidadeDisponible> recuperaEntidades()
        {
            List <EntidadeDisponible> resultado = new List <EntidadeDisponible>();
            var classeBase = typeof(Libro);

            Type[] listaClases = GetTypes(Assembly.GetExecutingAssembly(), classeBase.Namespace);
            for (int i = 0; i < listaClases.Length; i++)
            {
                var cfg = listaClases[i].GetCustomAttribute(typeof(Configuracion), true) as Configuracion;
                if (null != cfg)
                {
                    EntidadeDisponible e = new EntidadeDisponible(cfg.Nombre, listaClases[i].AssemblyQualifiedName, cfg.Servicio);
                    foreach (var prop in listaClases[i].GetProperties())
                    {
                        object[] objects = prop.GetCustomAttributes(false);
                        foreach (object obj in objects)
                        {
                            if (obj is Columna)
                            {
                                e.Columnas.Add(new KeyValuePair <string, string>(prop.Name, ((Columna)obj).Nombre));
                            }
                        }
                    }
                    resultado.Add(e);
                }
            }
            return(resultado);
        }
        private void cboEntidades_SelectedIndexChanged(object sender, EventArgs e)
        {
            EntidadeDisponible entidadSeleccionada = cboEntidades.SelectedValue as EntidadeDisponible;

            // configurando la información de la entidad seleccionada
            dataGridView1.DataSource = null;
            dataGridView1.Columns.Clear();
            dataGridView1.ColumnCount = entidadSeleccionada.Columnas.Count;

            for (int i = 0; i < entidadSeleccionada.Columnas.Count; i++)
            {
                dataGridView1.Columns[i].DataPropertyName = entidadSeleccionada.Columnas[i].Key;
                dataGridView1.Columns[i].Name             = entidadSeleccionada.Columnas[i].Value;
            }

            // creando una instancia del servicio solicitado
            instance     = Activator.CreateInstance(entidadSeleccionada.Servicio);
            instanceType = entidadSeleccionada.Servicio;
            textBox1_TextChanged(null, null);
        }