Brak pobierania pól z GetType (). GetFields z BindingFlag.Default

Używam klas Reflection, aby uzyskać wszystkie pola wewnątrz pewnego obiektu. Mój problem polega jednak na tym, że działa idealnie, gdy pola znajdują się w normalnej klasie, np .:

class test
{
   string test1 = string.Empty;
   string test2 = string.Empty;
}

Tutaj otrzymuję zarówno test1, jak i test2, mój problem polega na tym, że używam abstrakcji, a tym samym kilku klas połączonych.

Mam coś takiego:

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;
}

Ale kiedy go uruchomię, nie odbieram pól z powrotemGetType().GetFields(BindingFlag.Default).

Każdy z tych pól ma również własność,get; set; dołączony do tego. Kiedy uruchamiam kod, otrzymuję właściwości aż do testu1, ale nie do rzeczywistych pól.

To jest kod, który próbuję pobrać z pól:

FieldInfo[] fields = Obj.GetType().GetFields(BindingFlags.Default);
foreach (FieldInfo field in fields)

Próbowałem też:

FieldInfo[] fields = Obj.GetType().GetFields(BindingFlags.Public 
                                             | BindingFlags.Instance 
                                             | BindingFlags.NonPublic 
                                             | BindingFlags.Static);

Używam tego samego kodu do właściwości:

PropertyInfo[] properties = Obj.GetType().GetProperties(BindingFlags.Public 
                                             | BindingFlags.Instance 
                                             | BindingFlags.NonPublic 
                                             | BindingFlags.Static);

foreach (PropertyInfo property in properties)

Jakieś pomysły, dlaczego otrzymuję właściwości z abstrakcyjnych klas, ale nie pola?

questionAnswers(6)

yourAnswerToTheQuestion