我有一個派生自抽象類的類。獲取派生類的類型我想知道哪些屬性是從抽象類繼承的,哪些屬性是派生類中聲明的。如何找出屬性是從基類繼承還是在派生中聲明?
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,名稱是在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}
我錯過了什麼嗎?
不知何故,這種方法沒有給出預期的結果。問題已更新。 – Maxim
@Maxim你需要'type.GetProperties(BindingFlags.DeclaredOnly | BindingFlags.Instance | BindingFlags.Public)'。 +1給裏德,希望他會更新回答一下 –
@Maxim增加了一些代碼... –