Não obtendo campos de GetType (). GetFields com BindingFlag.Default

Eu estou usando as classes de reflexão para obter todos os campos dentro de um determinado objeto. Meu problema, porém, é que funciona perfeitamente quando os campos estão dentro de uma classe normal, como:

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

Aqui eu recebo test1 e test2, meu problema é que eu uso abstração e, portanto, várias classes combinadas.

Eu tenho algo como:

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

Mas quando eu corro, eu não recebo os campos de voltaGetType().GetFields(BindingFlag.Default).

Todos esses campos também têm uma propriedade,get; set; anexado a ele. Quando executo o código, obtenho as propriedades todo o caminho de volta para test1, mas não para os campos reais.

Este é o código com o qual estou tentando obter os campos:

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

Eu também tentei:

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

Eu uso o mesmo código para as propriedades:

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

foreach (PropertyInfo property in properties)

Alguma idéia porque eu recebo as propriedades das classes abstraídas, mas não os campos?

questionAnswers(6)

yourAnswerToTheQuestion