В первую очередь, я должен сказать, что собираюсь говорить о System.ComponentModel.Component
.
Вы знаете, я понимаю, что .NET Component Model
обеспечивает способность (через Site Services) для определения отдельный Components
, таким образом, они могут общаться друг с другом слабо связанным способом, и что каждый Component
легко заменимо.
Но моя точка, что я могу достигнуть этого иначе: Я имею в виду, разрабатываю ли я SW в праве Object Oriented Programming
способ, я могу посредством Abstract classes
, Interfaces
и т.д. достигните всей упомянутой функциональности / совместимость.
Затем, ПОЧЕМУ и КОГДА я должен полагаться на Компонентную модель?
Что ж, вы можете сделать это со своими собственными базовыми классами, интерфейсами и так далее. Фактически, это именно то, что в System.ComponentModel есть . Это общий набор интерфейсов и базовых классов, так что вы можете реализовать свои компоненты и использовать их с реализациями других людей.
Если вы просто создали свои собственные базовые классы и интерфейсы, то любой, кто хотел бы взаимодействовать с вашим кодом, должен был бы использовать ваши классы. А что, если они захотят интегрироваться с двумя компонентами разных производителей одновременно?
В частности, все компоненты WinForms используют материал System.ComponentModel для реализации элементов управления, которые вы можете поместить в свою форму. Им пришлось выбрать какой-то интерфейс для представления этого, так почему бы не тот, который определен в System.ComponentModel? Зачем им создавать свои собственные, если уже есть идеально продуманный вариант?