Интерфейсы могут быть очень полезны, , и, к сожалению, есть ошибки в библиотеках классов .NET, где интерфейс (или два) мог бы сделать вещи чище или проще.
Однако вы должны подумать об этом с другой точки зрения. Интерфейс - это контракт. Интерфейсы - это соглашение, в котором потребители контракта и исполнители определяют, как они хотят взаимодействовать. Это, конечно, верно и для класса, но интерфейс рассматривается как более формальная и неизменная форма контракта. Вы не хотите, чтобы интерфейсы постоянно менялись. Интерфейсы полезны именно благодаря своей стабильности.
Сказав это, создание интерфейса, который просто дублирует открытый интерфейс класса, не обязательно создает значение . Особенно, если вряд ли может быть несколько разработчиков интерфейса или если разделение интерфейса не создает явной ценности. Фактически, вы можете утверждать, что преждевременное создание интерфейсов может быть вредным, поскольку оно блокирует интерфейсы, которые могут быть плохо поняты или которые не отражают абстракцию. Тот факт, что практика взаимодействия с интерфейсами хорошо работает с интерфейсами, не является достаточной причиной для создания интерфейса для каждого класса.
В примерах, которые вы цитируете, неясно, что интерфейс будет создавать значимую ценность помимо вашего желания облегчить насмешку. Имейте в виду, что каждый дополнительный тип, добавляемый в .NET BCL, делает кривую обучения намного круче - чем больше типов, тем больше вещей нужно изучить и понять.
Наконец, чтобы ответить на ваш вопрос напрямую, Microsoft должна принимать решение о том, сколько времени и усилий нужно вкладывать в .NET при каждом выпуске . Каждая функция и каждый тип должны быть разработаны, внедрены, задокументированы, протестированы, поддержаны и т. Д. Поскольку функции не являются бесплатными, должна быть веская причина для их реализации, чтобы преодолеть большой ценовой барьер. Задержка выпуска .NET для добавления интерфейсов, которые никогда не могут быть широко полезными (и, возможно, даже вредными), вероятно, не то, что предпочитает большинство разработчиков.