有沒有一種方法(反射或其他方式)以編程方式確定IList接口需要ICollection,這又需要IEnumerable?我可以以編程方式確定接口需求/依賴/繼承嗎?
我正在致力於reflection library,遇到了一個我可以使用這些信息的場景,但沒有辦法獲得它。編譯器和IDE(顯然)都知道關係,所以它必須以某種方式可用。
我希望不涉及IL或源解析的建議,這兩者都不是我用例的選項。
有沒有一種方法(反射或其他方式)以編程方式確定IList接口需要ICollection,這又需要IEnumerable?我可以以編程方式確定接口需求/依賴/繼承嗎?
我正在致力於reflection library,遇到了一個我可以使用這些信息的場景,但沒有辦法獲得它。編譯器和IDE(顯然)都知道關係,所以它必須以某種方式可用。
我希望不涉及IL或源解析的建議,這兩者都不是我用例的選項。
您可以使用Type.GetInterfaces
來發現此信息。在下面的powershell
Doh!謝謝,只是說明你可以多快地忘記一些東西,如果你不用它一段時間:) –
其實,它似乎不需要遞歸(我得到一個具有所有必需接口的數組)。 –
@MortenMertner:...它再次驗證您的第一條評論:-) – Jon
實例:
PS C:\> [collections.ilist].getinterfaces()
IsPublic IsSerial Name BaseType
-------- -------- ---- --------
True False ICollection
True False IEnumerable
C#中的等效將是:typeof(IList).GetInterfaces()
。
COM對象可以做到這一點。 – VoidStar