您可以检查属性信息的DeclaringType
值,看看它是否与 type 匹配Child
。如果它不匹配,那么你知道它是在父级上声明的。
Type type = typeof(Child);
PropertyInfo dateTimeProperty = type.GetProperty("DateCreated");
bool declaredByParentClass = dateTimeProperty.DeclaringType != typeof(Child);
或者,您可以使用重载GetProperty
来检索仅在 type 上声明的属性Child
:
Type type = typeof(Child);
PropertyInfo dateTimeProperty = type.GetProperty("DateCreated", BindingFlags.DeclaredOnly | BindingFlags.Public);
bool declaredByParentClass = dateTimeProperty == null;
如果您只是想检查它是否是从父类声明的,您可以使用第二种方法。但是,我怀疑即使在父级上声明了该属性,您也会想对该属性执行某些操作,如果是这样,您将希望使用第一种方法来避免使用不同的绑定标志两次检索该属性。