В принципе, я согласен с Мартином: BindingFlags.FlattenHierarchy
, вероятно, то, что вам нужно. Тем не менее, я думаю, что они должны быть использованы вместо из BindingFlags.DeclaredOnly
, т.е.
Type type = obj.GetType();
var c = type.GetProperty("P", BindingFlags.FlattenHierarchy |
BindingFlags.Public |
BindingFlags.Instance);
Затем вы можете использовать c.DeclaringType
, чтобы узнать, на каком уровне было объявлено свойство.
Если вы укажете DeclaredOnly
, а Тип type
не объявит (но унаследует) P
, будет возвращено null
.