¿Como recorrer las propiedades de un objeto dinámicamente? C# .Net

En este video te enseño como es posible recorrer los atributos de un objeto como si fuera un arreglo o una lista, de esta manera puedes crear formularios dinámicos, tablas dinámicas, validadores y muchas cosas más, de manera dinámica.

Código:


 public class Persona
    {
        public string Nombre { get; set; }
        public int Edad { get; set; }
        public decimal Estatura { get; set; }
        public string Apellido { get; set; }

    }
    class Program
    {
        static void Main(string[] args)
        {
            Persona oPersona = new Persona() { Nombre = "Juan",Apellido="De León", Edad = 31, Estatura = 1.80M };

            PropertyInfo[] lst = typeof(Persona).GetProperties();
            foreach (PropertyInfo oProperty in lst)
            {
                string NombreAtributo = oProperty.Name;
               // string Tipo = oProperty.GetType().ToString();
                string Valor = oProperty.GetValue(oPersona).ToString();

                Console.WriteLine("El atributo "+NombreAtributo+" tiene el valor: "+Valor );
            }
        }
    }

¿Cómo recorrer dinámicamente los atributos de un objeto en C#?

En c# existe una manera fácil para recorrer dinámicamente los atributos de un objeto, de la siguiente manera podemos obtener el valor de un objeto dinámicamente y también el nombre de sus atributos en forma de cadena, para ello haremos uso de la clase PropertyInfo con la cual podemos obtener la estructura de nuestro objeto, abajo comento y pongo un ejemplo simple para entenderlo:

Clase para el ejemplo:


public class Auto
{
            public string Nombre { get; set; }
            public string Marca { get; set; }
            public string Modelo { get; set; }

            public int Año { get; set; }
}

Y para realizar el recorrido de los atributos lo hacemos de la siguiente manera:


Auto oAuto = new Auto() { Nombre = "Mi auto", Marca = "Honda", Modelo = "Civic", Año = 2018 };

PropertyInfo[] properties = typeof(Auto).GetProperties();
foreach (PropertyInfo property in properties)
{
     //así obtenemos el nombre del atributo
     string NombreAtributo=property.Name; 

     //así obtenemos el valor del atributo
     string Valor=property.GetValue(oAuto);
     Console.WriteLine("El atributo "+NombreAtributo+" tiene el valor: "+ Valor);
}

Y el resultado:

El atributo Nombre tiene el valor: Mi auto
El atributo Marca tiene el valor: Honda
El atributo Modelo tiene el valor: Civic
El atributo Año tiene el valor: 2018

Si agregamos nuevos atributos a nuestra clase este algoritmo seguiría recorriendo dinámicamente todas la nuevas propiedades de nuestra clase.

3.- Atributos – Curso Básico de #Jquery #3

Las funciones de jquery o métodos de jquery nos sirven para realizar manipulación de los atributos de los elementos DOM (elementos HTML), animaciones, agregar eventos y muchas otras cosas; en este capítulo nos enfocaremos a las funciones que sirven para modificar los atributos de los elementos DOM.

Para poder utilizar las funciones, basta con utilizar los selectores (que vimos en el capitulo anterior), seguido de un punto y el nombre de la función, por ejemplo:

Código HTML

<input type="text" value="un valor" id="txtTexto" />

Código Jquery

var valorDeCajaDeTexto=$("#txtTexto").val();
alert(valorDeCajaDeTexto)

//Nos mostraría "un valor" en el alert

En el ejemplo anterior utilizamos la función de nombre val(), la cual nos regresa el valor que tiene un elemento DOM en su atributo value. Pero qué pasa cuando no deseamos obtener el atributo value, por ejemplo obtener la liga a la que apunta un elemento link (<a> anchor), para ello utilizamos la función de nombre prop(), la cual se puede utilizar de dos formas, tanto para obtener el valor, como para otorgar el valor, en el ejemplo siguiente vemos como obtener el valor:

Código HTML

<a id="liga" href="www.google.com">ir a una pagina</a>

Código Jquery

alert($("#liga").prop("href"))

//Nos muestra www.google.com en un alert

Y si deseamos utilizar la misma función pero para otorgar un valor es de la siguiente manera:

$("#liga").prop("href","www.hdeleon.net")
//cambia la liga del link a www.hdeleon.net

Ahora vamos a ver una función con la cual podemos obtener el contenido HTML de un elemento, es decir, el contenido que contiene dentro de él (claro que no aplica con elementos input o elementos imágenes (<img>)  por el hecho que no tienen elementos HTML dentro), vamos a utilizar la función html(), igual que prop() esta función sirve para obtener y asignar un valor, solo que esta sirve para el contenido HTML, (tal como lo hace innerHTML de javascript); a continuación veamos un ejemplo:

Código HTML

<div id="contenido">
<ul>
<li>un elemento</li>
<li>un elemento</li>
<li>un elemento</li>
<li>un elemento</li>
<li>un elemento</li>
</ul>
</div>

Código Jquery

obtenemosHTML=$("#contenido").html();
alert(obtenemosHTML)

//El alert muestra el contenido del div con el id "contenido"

Por último, gracias a los selectores de jquery, podemos realizar una función a varios elementos, supongamos que deseamos poner un value a todos los inputs de nuestra pagina, simplemente lo haríamos de la siguiente manera.

Código HTML

<input type="text" value="un valor" id="txtTexto" />
<input type="text" value="un valor" id="txtTexto2" />
<input type="text" value="un valor" id="txtTexto3" />
<input type="text" value="un valor" id="txtTexto4" />

Código Jquery

$("input").prop("value","valor a todos los input")

En este capítulo vimos algunas de las funciones de jquery para manipular los atributos de los elementos DOM; existen algunas otras funciones que pueden ver en la siguiente liga y sin duda después de leer este capítulo, no tendrán ninguna dificultad en entender su funcionamiento.

Ir al Capitulo Siguiente (4.- La función Css).

Ir al  Capitulo Anterior (2.- Selectores).