[c#] 리플렉션을 통해 공개 정적 필드의 값 가져 오기
이것이 내가 지금까지 한 일입니다.
var fields = typeof (Settings.Lookup).GetFields();
Console.WriteLine(fields[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"