Как я уже говорил, важная характеристика CTS — иерархия объектов с единым корнем. В .NET Framework каждый тип системы происходит от базового класса
System.Object.
Подход, использующий единый базовый класс, — важное отличие от языка C++, в котором нет базового класса для всех классов. Он рекомендован теоретиками ООП и реализован в большинстве объектно-ориентированных языков, формирующих главное направление этой технологии. Возможно, вы не увидите всех преимуществ иерархии с единым корнем сразу. Но со временем вы задумаетесь: как же велась разработка языков до того, как была введена поддержка этого типа иерархии?
Иерархия объектов с единым корнем является ключевой для унифицированной системы типов, поскольку гарантирует наличие общего интерфейса у каждого объекта в иерархии, и поэтому всякая сущность в составе этой иерархии в конечном счете принадлежит к одному базовому типу. Один из самых серьезных минусов C++ — отсутствие поддержки подобной иерархии. Рассмотрим простой пример.
Допустим, создав иерархию объектов на C++ на основе собственного базового класса
CFoo,
вы хотите интегрировать ее с другой иерархией, все объекты которой происходят от базового класса
СВаг.
В этом примере интерфейсы иерархий объектов несовместимы, поэтому их интеграция заставит попотеть. Чтобы справиться с этой задачей, вам придется использовать класс-оболочку или множественное наследование. В случае иерархии с одним корнем совместимость не проблема, так как интерфейс объектов един (унаследованный от
System.Object).
В результате вы знаете, что у любого и каждого объекта вашей иерархии — и, что важнее всего, в иерархиях кода .NET сторонних разработчиков — всегда будет минимальный набор функциональности.