Come elencare tutte le variabili di class

C’è un modo per elencare tutte le variabili (campi) di una class in C #. Se sì di quanto qualcuno potrebbe darmi qualche esempio su come salvarli in una List e ottenerli magari usando Anonymous Types (var).

La tua domanda non è perfettamente chiara. Sembra che tu voglia i valori dei campi per una determinata istanza della tua class:

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

Nota che fieldValues è List . Qui, foo è un’istanza esistente della tua class.

Se si desidera campi public e non public , è necessario modificare i flag di associazione tramite

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

Se vuoi semplicemente i nomi:

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

Qui, Foo è il nome della tua class.

Questo elencherà i nomi di tutti i campi di una class (sia pubblici che non pubblici, sia statici che campi di istanza):

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

Se invece vuoi ottenere i campi basandoti su qualche istanza di object, usa invece GetType :

 foreach (FieldInfo field in theObject.GetType().GetFields(bindingFlags)) { Console.WriteLine(field.Name); } 
 myClass.GetType().GetProperties() 
 var fields = whateverYourClassType.GetType().GetFields().Select(f => f.Name).ToList(); 

Non proprio la domanda posta – ma ecco come ottenere i valori di tutte le proprietà di tipo Decimal da un object chiamato “inv”:

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