visual una studio sirve que propiedades propiedad programacion para esperaba declarar declara crear como clase automaticamente atributos agregar acceso c# reflection

c# - una - Cómo enumerar todas las variables de clase



que es set en programacion (5)

¿Hay alguna manera de enumerar todas las variables (campos) de una clase en C #. Si es así, ¿podría alguien darme algunos ejemplos de cómo guardarlos en una List y obtenerlos tal vez utilizando los Anonymous Types (var).


Esto listará los nombres de todos los campos en una clase (públicos y no públicos, tanto campos estáticos como de instancia):

BindingFlags bindingFlags = BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.Static; foreach (FieldInfo field in typeof(TheClass).GetFields(bindingFlags)) { Console.WriteLine(field.Name); }

Si desea obtener los campos basados ​​en alguna instancia de objeto en su lugar, use GetType en GetType lugar:

foreach (FieldInfo field in theObject.GetType().GetFields(bindingFlags)) { Console.WriteLine(field.Name); }


Tu pregunta no está perfectamente clara. Parece que quieres los valores de los campos para una instancia determinada de tu clase:

var fieldValues = foo.GetType() .GetFields() .Select(field => field.GetValue(foo)) .ToList();

Tenga en cuenta que fieldValues es List<object> . Aquí, foo es una instancia existente de tu clase.

Si desea campos public y no public , debe cambiar los indicadores de enlace a través de

var bindingFlags = BindingFlags.Instance | BindingFlags.NonPublic | BindingFlags.Public; var fieldValues = foo.GetType() .GetFields(bindingFlags) .Select(field => field.GetValue(foo)) .ToList();

Si solo quieres los nombres:

var fieldNames = typeof(Foo).GetFields() .Select(field => field.Name) .ToList();

Aquí, Foo es el nombre de tu clase.


var fields = whateverYourClassType.GetType().GetFields().Select(f => f.Name).ToList();


myClass.GetType().GetProperties()


No es exactamente la pregunta que se hizo, pero aquí se explica cómo obtener los valores de todas las propiedades del tipo Decimal de un objeto llamado "inv":

var properties = inv.GetType().GetProperties(); foreach (var prop in properties) { if (prop.ToString().ToLower().Contains("decimal")) { totalDecimal += (Decimal)prop.GetValue(inv, null); } }