Mostrando entradas con la etiqueta C Sharp. Mostrar todas las entradas
Mostrando entradas con la etiqueta C Sharp. Mostrar todas las entradas

lunes, 5 de enero de 2015

Usando reflection, un ejemplo practico con C Sharp "C#"



Reflection es una herramienta sencilla en su concepto, pero un poco difícil en su manejo. Permite el acceso a objetos (ensamblados, módulos, propiedades, tipos de datos, etc) de manera dinámica.
Para poder comprender un poco más del tema, voy a mostrar el siguiente ejemplo:

Tengo una cantidad “n” de clases que necesito mostrar en formularios web, para evitar escribir por cada atributo de cada clase la sentencia de asignación de la propiedad al control web “txtUsuario.text = objeto.usuario”. Cree una clase con un método en la carpeta App_code de nombre “ManejoControles”, a esta clase le paso como parámetros el objeto y un panel que contiene los controles. Esta clase se encarga de recorrer los controles contenidos en el panel, en caso de ser  alguno de tres predeterminados (Texto, DropDownList y RadioButtonList), se busca por el nombre del control en el objeto el valor y se le asigna al control. (Espero haberme hecho entender).

Como estándar a cada control le asigno una nomenclatura en su nombre, las tres primeras letras corresponden al tipo de control y el resto del nombre corresponde al nombre de la propiedad del objeto. Adicionalmente dejo todos los controles que quiero llenar con los valores del atributo de un objeto dentro de un control panel de asp.net.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using Logica;
using Entidades;
using System.Reflection;

        public void ObjetoPanel(Panel Panel, object Objeto)
        {
            String TipoControl;
            String Nombre = String.Empty;

            foreach (Control oControl in Panel.Controls)
            {
                TipoControl = oControl.GetType().ToString();
                switch (TipoControl)
                {
                    case "System.Web.UI.WebControls.TextBox":
                        TextBox oTextBox = (TextBox)oControl;
                        Nombre = oTextBox.ID.Substring(3, oTextBox.ID.Length - 3);
                        oTextBox.Text = Convert.ToString(Objeto.GetType().GetProperty(Nombre).GetValue(Objeto, null));
                        break;
                    case "System.Web.UI.WebControls.DropDownList":
                        DropDownList oLista = (DropDownList)oControl;
                        Nombre = oLista.ID.Substring(3, oLista.ID.Length - 3);
                        oLista.SelectedValue = Convert.ToString(Objeto.GetType().GetProperty(Nombre).GetValue(Objeto, null));
                        break;
                    case "System.Web.UI.WebControls.RadioButtonList":
                        RadioButtonList oRadio = (RadioButtonList)oControl;
                        Nombre = oRadio.ID.Substring(3, oRadio.ID.Length - 3);
                        oRadio.SelectedValue = Convert.ToString(Objeto.GetType().GetProperty(Nombre).GetValue(Objeto, null));
                        break;
                }

            }

        }

Si este ejemplo les es de utilidad, por favor no olvidar dejar un comentario o like.

Para el ejemplo use Web developer express 2013 que se consigue aquí.

jueves, 1 de enero de 2015

Visual Studio 2013 No muestra las clases de la carpeta App_Code

Visual Studio 2013 No muestra las clases de la carpeta App_Code.

Hace poco decidí comenzar a hacer mis nuevos desarrollos con Visual Studio 2013, así que al crear mi primer aplicativo web comencé a utilizar algunas utilidades para manejo de controles y me encontré que en el nuevo Visual Studio 2013 para web cuando creas una clase dentro de la carpeta App_Code, a diferencia de con Visual Studio 2010, este no las compila de manera predeterminada, para esto tienes que entrar a las propiedades de la clase mediante clic derecho sobre el nombre de la clase y cambiar la opción de  “Acción de compilación” a compilación.

Con lo anterior podrás invocar las clases realizadas en tu carpeta App_code dentro de tus páginas web.




 Para descargar Visual Studio Web Developer express 2013, lo puedes bajar del siguiente enlace: Visual Studio 2013

Entrada destacada

Arquitectura de N-Capas con Visual Studio .NET y AngularJS

Este artículo es el primero de una serie de artículos en que quiero explicar mi visión de la programación por capas. La Arquitectura ...