Предоставление кода из библиотеки связано с высокой стоимостью. Экспонирование из библиотеки framework еще выше.
Ii сильно подталкивает вас поддерживать двоичную (и, вероятно, исходную) совместимость в течение всего срока службы продукта. Хуже того, это всего лишь те вещи, которые продавцы могли бы использовать, и это означало бы, что MS, нарушившая любые контракты с этими классами, вероятно, сломает виджет, использующий мои сотни или тысячи платящих клиентов.
Нарушение обратной совместимости - это то, что MSFT исторически избегает (свидетельство количества интерфейсов, называемых Foo2, Foo3 и методов, вызывающих Blah и BlahEx).
Поскольку они неуклонно несут значительный «долг» таким образом в течение своей жизни, они поняли, что избегание этих проблем с самого начала является самым дешевым способом решения таких проблем в будущем. Таким образом, любой новый публичный API должен очень сильно оправдать свое существование.
Генерация временного кода проектирования - это область, которая настоятельно требует улучшений в течение жизненного цикла программной экосистемы (посмотрите на частичные изменения класса в VS, чтобы увидеть серьезные изменения в этой области, но есть и множество других более мелких) , Выставляя классы, которые сильно зависят от этой инфраструктуры, они ограничивали бы возможности для изменения самой инфраструктуры, которую они считают своим конкурентным преимуществом.
Таким образом, разумный и безопасный подход состоит не в том, чтобы выставлять такие классы. Я бы, конечно, применил бы такой же подход, если бы не был компанией с размерами Microsoft и клиентской базой.