我有一個表示接口的System.Type實例,我想獲得該接口上所有屬性的列表 - 包括那些從基接口繼承的屬性。我基本上需要從我爲類獲得的接口獲得相同的行爲。反映一個接口的所有屬性,包括繼承的屬性?
例如,鑑於這一層次:
public interface IBase {
public string BaseProperty { get; }
}
public interface ISub : IBase {
public string SubProperty { get; }
}
public class Base : IBase {
public string BaseProperty { get { return "Base"; } }
}
public class Sub : Base, ISub {
public string SubProperty { get { return "Sub"; } }
}
如果我呼籲類的GetProperties - typeof(Sub).GetProperties()
- 然後我得到兩個BaseProperty和子屬性。我想用界面做同樣的事情,但是當我嘗試它時 - typeof(ISub).GetProperties()
- 所有返回的都是SubProperty。
我嘗試將BindingFlags.Instance | BindingFlags.Public | BindingFlags.FlattenHierarchy
傳遞給GetProperties,因爲我對FlattenHierarchy的理解是它應該包含來自基類的成員,但行爲完全相同。
我想我可以遍歷Type.GetInterfaces()
,並呼籲每個人的GetProperties,但後來我將依賴於GetProperties中的接口上從未迴歸基本屬性(因爲如果做過,我會得到副本)。如果沒有至少看到它的記錄,我寧願不依賴這種行爲。
如何,我不是:
- 獲取一個接口上的所有屬性的列表,包括那些從基接口?或
- 至少有信心,我所看到的是可以依賴的記錄行爲,所以我可以解決它嗎?
[GetProperties()返回接口繼承層次結構的所有屬性的可能的重複](http://stackoverflow.com/questions/358835/getproperties-to-return-all-properties-for-an-interface-inheritance - 層次結構) – nawfal 2013-04-29 14:17:43