У меня есть библиотека на основе mono.cecil, в которой мне нужно найти все реализации некоторого виртуального метода X. Дело в том, что метод X каждый раз отличается. Это могут быть любые виртуальные методы. Я думаю, это возможно, только если как-то будет доступна vtable. Потому что такие методы, как Equals (...), могут иметь сотни реализаций. Если бы это помогло, я мог бы ограничить поиск какой-нибудь определенной сборкой.
Единственный способ, который я вижу сейчас, описан ниже:
- Получить DeclaringType виртуального метода.
- Найти все унаследованные типы в сборке.
- Проанализировать каждый тип, если он имеет реализацию для метода.
Подход не оптимален. Даже если бы я добавил немного кеша, он все равно был бы медленным из-за анализа сборки, но путь выполнения имеет решающее значение. Если вы видите другое решение, поделитесь им.