Краткий ответ - Нет, это невозможно.
Длинный ответ: Метод расширения - это всего лишь метод stati c, который принимает параметры и содержит ключевое слово this
. Intellisense сканирует код, чтобы найти все методы расширения, и предоставляет нам сахар syntacti c, который позволяет вызывать их в экземпляре класса, аналогично обычным методам.
Интерфейс, с другой стороны, описывает поведение объекта и используется для группировки и разделения / разделения объектов по тому, что они делают:
IBird { void Fly(); }
IBug { void Crawl(); }
class Parrot : IBird {}
class Ant : IBug {}
Если у нас есть что-то вроде:
IGlidingBird { void Fly(); } // and
IFlappingBird { void Fly(); }
Тогда, вероятно, у нас плохой дизайн, потому что интерфейс будучи контейнером виртуальных методов, вы ничего не должны знать о его фактической реализации.
В примере кода вы увидите ошибку времени компиляции: «Вызов неоднозначен между следующими методами ...» .
Хотя вы могли бы привести объект к одному из типов интерфейса, чтобы сообщить компилятору, какие методы использовать:
((IInterfaceA)instance).DoSomething()
((IInterfaceB)instance).DoSomething()
Это может быть хорошим моментом. сделать паузу и подумать, можно ли изменить дизайн и вообще избежать этой проблемы.