Ответ 1
Вам нужно передать null
в GetValue
, так как это поле не принадлежит ни одному экземпляру:
props[0].GetValue(null)
Это то, что я сделал до сих пор:
var props = typeof (Settings.Lookup).GetFields();
Console.WriteLine(props[0].GetValue(Settings.Lookup));
// Compile error, Class Name is not valid at this point
И это мой статический класс:
public static class Settings
{
public static class Lookup
{
public static string F1 ="abc";
}
}
Вам нужно передать null
в GetValue
, так как это поле не принадлежит ни одному экземпляру:
props[0].GetValue(null)
Вам нужно использовать перегрузку Type.GetField(System.Reflection.BindingFlags):
Например:
FieldInfo field = typeof(Settings.Lookup).GetField("Lookup", BindingFlags.Public | BindingFlags.Static);
Settings.Lookup lookup = (Settings.Lookup)field.GetValue(null);
Подпись FieldInfo.GetValue
public abstract Object GetValue(
Object obj
)
где obj
- это экземпляр объекта, из которого вы хотите получить значение или значение null
если это статический класс. Так что это должно сделать:
var props = typeof (Settings.Lookup).GetFields();
Console.WriteLine(props[0].GetValue(null));
Попробуйте это
FieldInfo fieldInfo = typeof(Settings.Lookup).GetFields(BindingFlags.Static | BindingFlags.Public)[0];
object value = fieldInfo.GetValue(null); // value = "abc"