Могу ли я определить программные требования / зависимости / наследование программно? - PullRequest
6 голосов
/ 22 октября 2011

Есть ли способ (отражение или иное), чтобы программно определить, что для интерфейса IList требуется ICollection, что, в свою очередь, требует IEnumerable?

Я работаю над библиотекой отражений и пришелчерез сценарий, где я мог бы использовать эту информацию, но не нашел способа ее получить.И компилятор, и IDE (очевидно) знают отношение, поэтому оно должно быть как-то доступно.

Я надеюсь на предложения, которые не связаны с анализом IL или источника, ни один из которых на самом деле не подходит для моего варианта использования.

Ответы [ 2 ]

4 голосов
/ 22 октября 2011

Вы можете использовать Type.GetInterfaces для обнаружения этой информации.

1 голос
/ 22 октября 2011

Примеры ниже в powershell:

PS C:\> [collections.ilist].getinterfaces()

IsPublic IsSerial Name                                     BaseType
-------- -------- ----                                     --------
True     False    ICollection
True     False    IEnumerable

Эквивалент в c # будет: typeof(IList).GetInterfaces().

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...