Ieri mi è capitato di dover recuperare tutti i "campi"
pubblici e non di una classe, della sua classe base, della base della sua
base, della... vabè, ci siamo capiti!
Non veniva volutamente considerata l'ereditarietà multipla (d'altronde non è
contemplata neanche nelle CLS).
Il modo che ho trovato io, che probabilmente sarà ben lungi dall'essere
definito come il migliore, è semplicemente quello fare la ricerca in tute le
classi base fino ad arrivare al null.
Un pochino di attenzione hanno meritato i campi protected, che sono
giustamente visibili nella classe derivata, ma lo sono anche nella classe base.
Il flag BindingFlags.NonPublic giustamente recupera...