Указывает на наследование интерфейса из другого COM компонента.

[IMPLEMENTS cInterfaceName [EXCLUDE] IN TypeLib | TypeLibGUID | ProgID ]

Параметры

[IMPLEMENTS cInterfaceName [EXCLUDE] IN TypeLib | TypeLibGUID | ProgID]

Определяет, что определение класса наследует интерфейс или определение класса другого COM компонен. Вы можете включить множество предложений IMPLEMENTS.

ЗамечаниеЗамечание

Определенные технологии, такие как Microsoft COM+ события, require the COM component to implement the interface of the event class being bound to.

Ключевое слово EXCLUDE исключает реализацию интерфейса из библиотеки типа.

Опция IN определяет местонахождение интерфейса для COM компонента. Вы можете указать библиотеку типов COM объекта с помощью TypeLib, GUID библиотеки типов с помощью TypeLibGUID или ProgID программы, которая инициализирует COM объект. Когда вы используете TypeLibGUID, укажите обозначение версии major и minor, как это сделано в приведенном ниже примере:

  CopyCode imageСкопировать код
IMPLEMENTS IDict1 IN {04BCEF93-7A77-11D0-9AED-CE3E5F000000}#1.0
ЗамечаниеСовет

Параметр TypeLib представляет собой наименее рекомендуемый путь указания библиотеки типов, поскольку для этого требуется указать имя файла, чей путь может различаться на разных компьютерах. Если вы распространяете вашу .dll, подумайте об использовании TypeLibGUID или ProgID вместо TypeLib.

ЗамечаниеЗамечание

Когда вы используете опцию IMPLEMENTS, вы должны включить все методы этого интерфейса в определение класса. Вы должны использовать имя интерфейса строго также, как он показано в библиотеке типов. Однако, для имен интерфейсов, начинаяющихся с символа подчеркивания (_), таких, как класс ADODB RecordSet, символ подчеркивания необязателен. Предваряйте имя метода именем интерфейса, например Publisher_ShowPrice. Это соглашение поможет избежать конфликта между двумя интерфейсами, содержащими методы с одинаковыми именами в случае, когда вы включаете в определение класса множество предложений IMPLEMENTS. Свойства, по существу, хранятся в виде двух методов внутри библиотеки типов, например, Put и Get, и определение класса должно включать в себя оба метода.

ЗамечаниеСовет

С целью экономии времени, вы можете использовать Visual FoxPro Object Browser и перетащить определения интерфейсов в ваш код. Вместе с предложением IMPLEMENTS для вам будут автоматически прописаны все инструментальные метожы с их параметрами. Для получения более подробной информации, смотрите Окно "Object Browser".

Expand imageПримечания

В приведенном ниже процедурном коде показана сводка главных опций команды DEFINE CLASS:

  CopyCode imageСкопировать код
DEFINE CLASS Clause
   [Property_Definition_Clause]
   [PEMName_COMATTRIB Clause]
   [ADD OBJECT Clause]
   [IMPLEMENTS Clause]
   [Function_Procedure_Definition_Clause]
ENDDEFINE

Для получения более подробной информации о полном синтаксисе команды, смотрите описание DEFINE CLASS. Для получения более подробной информации о конкретных опциях команды DEFINE CLASS, смотрите приведенные ниже статьи справки:

Expand imageПример

В приведенном ниже примере создается класс с именем MyPublisherClass, на базе класса Custom, с использованием ключевого слова OLEPUBLIC с тем, чтобы клиенты автоматизации могли иметь доступ к классу, когда он будет включен в сервер автоматизации, с использованием оператора IMPLEMENTS для наследования определения класса, наследуемого, в свою очередь из определения класса Publisher в библиотеке типов MyBookStore.dll, и включением метода ShowPrice из интерфейса Publisher.

  CopyCode imageСкопировать код
DEFINE CLASS MyPublisherClass AS Custom OLEPUBLIC
   IMPLEMENTS Publisher IN "MyBookStore.dll"
   PROCEDURE Publisher_ShowPrice(cGetID AS Long) AS Short
   ENDPROC
ENDDEFINE

Expand imageСмотрите также