Я проверил другие вопросы, и на удивление этот вопрос, похоже, не задавался. С помощью методов расширения, интерфейсы предоставляют ограниченное, но истинное многократное наследование реализации. Это приносит с собой проблему Diamond, так же, как и множественное наследование класса. Почему это лучше или более приемлемо, чем множественное наследование на основе классов, которое так много людей кажется настолько ужасным? На самом деле это выглядит намного худшим способом реализации множественного наследования, поскольку методы расширения не могут идти в самом интерфейсе или даже в классе, который реализует интерфейс, но может оказаться разбросанным по нескольким статическим классам утилиты.
Эрик Липперт в своем блоге (5 октября 2009 9:29 утра), казалось, был открыт идее свойств расширения и даже упоминает о возможности событий расширения, операторов расширения, конструкторов расширения (также известных как "шаблон w770" )). Таким образом, реализация через интерфейсы может быть дополнительно расширена.
Изменить: Чтобы прояснить, наследует ли класс от двух интерфейсов, которые имеют метод расширения с тем же именем и параметрами типа, тогда он выдаст ошибку компиляции, если вызывается метод с явно открытым наименованием интерфейс. Подумав об этом, я ошибся, поскольку это не проблема Алмазного. Однако размышление об этом ставит вопрос о том, что так важно в проблеме Алмаза, в отличие от других двусмысленностей? Почему проблема с алмазом такая сложность, что она не может быть воспринята с простой ошибкой компиляции так же, как когда методы расширения интерфейса класса противоречат друг другу и неявно разрешимы? Даже при множественном наследовании на основе классов возможно иметь конфликты подписей участников, которые не основаны на Diamond.