我有一个派生自抽象类的类。获取派生类的类型我想找出哪些属性是从抽象类继承的,哪些是在派生类中声明的。
public abstract class BaseMsClass
{
public string CommonParam { get; set; }
}
public class MsClass : BaseMsClass
{
public string Id { get; set; }
public string Name { get; set; }
public MsClass()
{ }
}
var msClass = new MsClass
{
Id = "1122",
Name = "Some name",
CommonParam = "param of the base class"
};
所以,我想快速发现 CommonParam 是一个继承参数,而 Id、Name 是在 MsClass 中声明的参数。有什么建议么?
尝试使用仅声明的标志返回空的 PropertyInfo 数组
Type type = msClass.GetType();
type.GetProperties(System.Reflection.BindingFlags.DeclaredOnly)
-->{System.Reflection.PropertyInfo[0]}
但是,GetProperties() 返回继承层次结构的所有属性。
type.GetProperties()
-->{System.Reflection.PropertyInfo[3]}
-->[0]: {System.String Id}
-->[1]: {System.String Name}
-->[2]: {System.String CommonParam}
我错过了什么?