정적 클래스의 멤버를 반복하고 필드 인 모든 멤버를 호출하려고합니다. 멤버를 호출하려고 시도하는 라인에서 MissingFieldException이 발생합니다. 이 같은C# - 반복 및 클래스 멤버 호출
뭔가 :
". 필드 'NamespaceStuff.MyClass + MyStaticClass.A'을 (를) 찾을 수 없습니다" 그것은 foreach 루프에서 인덱스 4에 도달 할 때이 불면
[0]|{System.String ToString()}
[1]|{Boolean Equals(System.Object)}
[2]|{Int32 GetHashCode()}
[3]|{System.Type GetType()}
[4]|{Int32 A}
[5]|{Int32 B}
[6]|{Int32 C}
('A'는 정말 거기에있다) :
public class MyClass {
public MyClass() {
Type type = typeof(MyStaticClass);
MemberInfo[] members = type.GetMembers();
foreach(MemberInfo member in members) {
if (member.MemberType.ToString() == "Field")
{
// Error on this line
int integer = type.InvokeMember(member.Name,
BindingFlags.DeclaredOnly |
BindingFlags.Public |
BindingFlags.Instance |
BindingFlags.GetField,
null, null, null);
}
}
}
}
public static class MyStaticClass
{
public static readonly int A = 1;
public static readonly int B = 2;
public static readonly int C = 3;
}
배열 "회원"이 같이 보입니다.
정적 클래스이기 때문에 InvokeMember()의 두 번째 - 마지막 매개 변수에 null을 전달했으며 여기에 전달할 적절한 것은 없습니다. 나는 내 문제가 이것과 관련이 있다고 생각한다.
내가 할 수있는 일이 가능합니까? 어쩌면 나는 완전히 잘못된 방향으로 가고 있을지도 모른다. 또한이 BindingsFlags 중 일부가 불필요한 경우 알려 주시기 바랍니다.
lo.l 너도 나를 이길거야 –
완벽! 고마워, 고마워. 이해하기가 훨씬 쉽다. 나는 아직도 내 머리를 감싸고있다. – Trevor