Obtenir la valeur d’un champ statique public par reflection

C’est ce que j’ai fait jusqu’ici:

var props = typeof (Settings.Lookup).GetFields(); Console.WriteLine(props[0].GetValue(Settings.Lookup)); // Comstack error, Class Name is not valid at this point 

Et c’est ma classe statique:

 public static class Settings { public static class Lookup { public static ssortingng F1 ="abc"; } } 

Vous devez transmettre null à GetValue , car ce champ n’appartient à aucune instance:

 props[0].GetValue(null) 

Vous devez utiliser la surcharge Type.GetField (System.Reflection.BindingFlags):

Par exemple:

 FieldInfo field = typeof(Settings.Lookup).GetField("Lookup", BindingFlags.Public | BindingFlags.Static); Settings.Lookup lookup = (Settings.Lookup)field.GetValue(null); 

La signature de FieldInfo.GetValue est

 public abstract Object GetValue( Object obj ) 

obj est l’instance d’object dont vous voulez récupérer la valeur ou null si c’est une classe statique. Donc cela devrait faire:

 var props = typeof (Settings.Lookup).GetFields(); Console.WriteLine(props[0].GetValue(null, null)); 

Essaye ça

 FieldInfo fieldInfo = typeof(Settings.Lookup).GetFields(BindingFlags.Static | BindingFlags.Public)[0]; object value = fieldInfo.GetValue(null); // value = "abc"