COM-объекты и интерфейсы C # - PullRequest
1 голос
/ 14 апреля 2011

Я совершенно новичок в этом и следую учебному пособию по MSDN: http://msdn.microsoft.com/en-us/library/aa645736(v=vs.71).aspx#vcwlkcominteroppart1cclienttutorialanchor2

Мой вопрос: почему мы используем интерфейсы COM И COM CoClasses? Кажется странным создавать экземпляр экземпляра COM CoClass, создавать новый объект, который является старым объектом, но преобразуется в интерфейс COM.

Я просто хочу понять идеологию здесь ... любая помощь полезна.

Ответы [ 2 ]

3 голосов
/ 14 апреля 2011

Теория состоит в том, чтобы отделить интерфейс (что может сделать объект) от реализации (как он это делает или, более конкретно, какой конкретный код создается для этого).

Определение типов только как позволяет интерфейсCOM, чтобы указать, как взаимодействуют объекты на нескольких языках;это одна из его главных целей.Поскольку спецификация интерфейса является договором о том, как передавать данные и вызывать методы, любой язык может предоставить COM-объект, не требуя от клиентов знать о внутренней работе разработчика (CoClass).

Это позволяет VB6,.net, C ++, deplhi и любое количество других языков для взаимодействия в одном приложении.

Статья в Википедии о COM имеет хороший опыт в этом отношении.

1 голос
/ 14 апреля 2011

Это базовый принцип проектирования в программной инженерии, интерфейс - это контракт, в ком-мире, coClass - это реализация. для COM интерфейс может быть определен в IDL, но реализация (coClass) может быть сделана в VB, C ++, .net и т. д.

...