6 – Bien ahora vamos a la clase progama y creamos un objeto DataTable el cual convertiremos a XML y lo pintaremos por pantalla.

Ingphillip

Así empezamos a ver como la gente en Redmond son unos genios de la inovación :D.

Pasemos a la parte de Reflection y cómo ésta nos permite manipular un objeto para dinámicamente crear otros a partir de la defición de dicho objeto.

7 – Creamos una clase la cual llamaremos Item. Por medio de esta clase y si se observa la definición de la estructura del DataTable tendremos un pequeño “espejo” de dicha estructura en un objeto instanciado a partir de la clase Item.

Ingphillip

8 – Ahora pasemos a crear el método que nos permite mediante System.Reflection.PropertyInfo capturar todas las propiedades referentes a la definición de un objeto de tipo <T>, que más adelante pasará a ser un objeto cómo por ejemplo Item.

Como se ve en la imagen mediante typeof(T) .GetProperties() obtenemos un array de objetos de tipo PropertyInfo en el cual estarán contenidas cada una de la propiedades de el objeto <T> dinámico que en algún momento será un objeto de la clase Item, pero de cualquier modo fuera cual fuera el objeto lo “mapearemos” a como de lugar con esta sencilla instrucción.

Empezamos en la sigueinte linea a recorrer cada una de las filas del datatable y internamente mediante Activator.CrateInstance<T>() creamos un objeto del tipo Anónimo que estamos convirtiendo y lo que equivaldría en su dado momento a  Item miObjeto = new Item(); proseguimos con un ciclo interno el cual nos permite recorrer la colección de propiedades de la clase Item las cuales son  Id, Name, Date. preguntamos que si X propiedad permite escritura, leemos el correspondiente nodo de la respectiva fila de el objeto datatable, entonces mediante el método SetValue pasamos a setear la propiedad  en el respectivo objeto tipo <T> y el respectivo valor. Allí observamos que el método SetValue internamente usa otro método extensor que en este caso extiende la clase Type, para corroborar si dicho Type es Nullable es decir que acepta valores null, de cualquier forma retorna el tipo y así podremos hacer el Cast dinámico y la posterior asignacion mediante el método SetValue de PropertyInfo de valor y tipo en el objeto dinámico que estamos instanciando.

Ingphillip

Así de esta forma al terminar convertiremos cada objeto en un item de la lista que queremos retornar y que usaremos y veremos en consola así:

Photobucket

Cabe aclarar que esto aplica para toda aplicación desarrollada en .NET. Y creanme que en dado momento se necesitará extender o reflejar objetos en nuestras aplicaciones.

Con esto demos por concluido el post, hasta la próxima un Saludo y espero haya sido  de su agrado.

Anuncios

Páginas: 1 2