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.