Esto es lo que he hecho hasta ahora:
var fields = typeof (Settings.Lookup).GetFields();
Console.WriteLine(fields[0].GetValue(Settings.Lookup));
// Compile error, Class Name is not valid at this point
Y esta es mi clase estática:
public static class Settings
{
public static class Lookup
{
public static string F1 ="abc";
}
}

propslugar defieldspuede confundir a un futuro desarrollador. Las propiedades son sus propias cosas y los campos definitivamente no lo son.Respuestas:
Necesita pasar
nullaGetValue, ya que este campo no pertenece a ninguna instancia:props[0].GetValue(null)fuente
Necesita usar la sobrecarga Type.GetField (System.Reflection.BindingFlags):
Por ejemplo:
FieldInfo field = typeof(Settings.Lookup).GetField("Lookup", BindingFlags.Public | BindingFlags.Static); Settings.Lookup lookup = (Settings.Lookup)field.GetValue(null);fuente
La firma de
FieldInfo.GetValueespublic abstract Object GetValue( Object obj )donde
objes la instancia de objeto de la que desea recuperar el valor onullsi es una clase estática. Entonces esto debería hacer:var props = typeof (Settings.Lookup).GetFields(); Console.WriteLine(props[0].GetValue(null));fuente
nullcorresponde el segundo ? ¿NoFieldInfo.GetValueacepta solo un único parámetro? Parece que no puedo encontrar sobrecargasGetValueni nadaPrueba esto
FieldInfo fieldInfo = typeof(Settings.Lookup).GetFields(BindingFlags.Static | BindingFlags.Public)[0]; object value = fieldInfo.GetValue(null); // value = "abc"fuente