GetType () ruft keine Felder ab. GetFields with BindingFlag.Default
Ich benutze die Reflection-Klassen, um alle Felder in einem bestimmten Objekt abzurufen. Mein Problem ist jedoch, dass es perfekt funktioniert, wenn sich die Felder in einer normalen Klasse befinden, wie zum Beispiel:
class test
{
string test1 = string.Empty;
string test2 = string.Empty;
}
Hier bekomme ich sowohl test1 als auch test2, mein Problem ist, dass ich Abstraktion benutze und somit mehrere Klassen kombiniere.
Ich habe so etwas wie:
class test3 : test2
{
string test4 = string.Empty;
string test5 = string.Empty;
}
class test2 : test1
{
string test2 = string.Empty;
string test3 = string.Empty;
}
class test1
{
string test0 = string.Empty;
string test1 = string.Empty;
}
Aber wenn ich es leite, bekomme ich die Felder nicht zurück von derGetType().GetFields(BindingFlag.Default)
.
Jeder dieser Felder hat auch eine Eigenschaft,get; set;
angehängt an. Wenn ich den Code ausführe, werden die Eigenschaften bis zu test1 zurückgegeben, jedoch nicht die tatsächlichen Felder.
Dies ist der Code, mit dem ich versuche, die Felder abzurufen:
FieldInfo[] fields = Obj.GetType().GetFields(BindingFlags.Default);
foreach (FieldInfo field in fields)
Ich habe auch versucht:
FieldInfo[] fields = Obj.GetType().GetFields(BindingFlags.Public
| BindingFlags.Instance
| BindingFlags.NonPublic
| BindingFlags.Static);
Ich benutze den gleichen Code für die Eigenschaften:
PropertyInfo[] properties = Obj.GetType().GetProperties(BindingFlags.Public
| BindingFlags.Instance
| BindingFlags.NonPublic
| BindingFlags.Static);
foreach (PropertyInfo property in properties)
Irgendwelche Ideen, warum ich die Eigenschaften von den abstrahierten Klassen bekomme, aber nicht die Felder?