Добавить некоторые BindingFlags
:
child.GetType().GetProperty("Name",
BindingFlags.DeclaredOnly | BindingFlags.Public | BindingFlags.Instance);
DeclaredOnly
означает:
Указывает, что должны рассматриваться только члены, объявленные на уровне иерархии предоставленного типа.Унаследованные члены не рассматриваются.
Или альтернатива, использующая LINQ (которая позволяет легко добавлять любые необычные проверки, например, проверку Attribute.IsDefined
):
child.GetType().GetProperties().Single(
prop => prop.Name == "Name" && prop.DeclaringType == typeof(Child));