The first thing I noticed about your example is that the _message field is declared as internal and the dialogResult field is declared as private. It seems that private fields are not included in the hierarchy for reflection past the current type. It looks like you would have to iterate through all the parent types and retrieve the private fields manually.