2011-07-19 10 views
14

Si tengo por ejemplo una clase comoiterar a través de campos de clase y les imprima

public class User{ 
      public int Id { get; set; } 
      public int Reputation { get; set; } 
      public string DisplayName { get; set; } 
      public DateTime LastAccessDate { get; set; } 
      public DateTime CreationDate { get; set; } 
      public string WebSiteUrl { get; set; } 
      public int Views { get; set; } 
      public int Age { get; set; } 
      public int UpVotes { get; set; } 
      public int downVotes { get; set; } 
      public string Location { get; set; } 
      public string AboutMe { get; set; } 
    } 

Y quiero recorrer estos campos dinámicamente, por ejemplo, a algún método, que inspeccionará pasado objeto y se volverá a llamador de sus campos.

¿Esto es posible?

+1

¿Campos o propiedades? ;) De todos modos intente buscar en StackOverflow y encontrará MUCHAS de las mismas preguntas con muy buenas respuestas – sll

Respuesta

37

No son campos, son propiedades. Puede usar el reflejo para listarlos:

User user = ... 
foreach(PropertyInfo prop in typeof(User).GetProperties()) 
{ 
    Console.WriteLine("{0} = {1}", prop.Name, prop.GetValue(user, null)); 
} 
Cuestiones relacionadas