Показать сообщение отдельно
  #1  
Старый 10.02.2018, 19:40
Аватар для dr. F.I.N.
dr. F.I.N. dr. F.I.N. вне форума
I Like it!
 
Регистрация: 12.12.2009
Адрес: Россия, г. Новосибирск
Сообщения: 660
Версия Delphi: D6/D7
Репутация: 26643
По умолчанию Интерфейсы

Сижу и туплю.
Код:
type
  InterfaceA = interface(IUnknown)
    [some GUID 1]
    ....
  end;

  InterfaceB = interface(InterfaceA)
    [some GUID 2]
    ....
  end;

  TSomeClass = class(TInterfacedObject, InterfaceB)
    ...
  end;

  SomeObject: TSomeClass;

  Supports(SomeObject, InterfaceB) = True, Supports(SomeObject, InterfaceA) = False.
Как я понимаю InterfaceB тянет за собой все методы InterfaceA, но почему Supports(..., InterfaceA) = False? Есть ли способ узнать, что объект уже реализовывает методы InterfaceA? Или обязательно делать так:
Код:
  TSomeClass = class(TInterfacedObject, InterfaceA, InterfaceB)
    ...
  end;
Может есть аналогия с TObject.InheristFrom(ObjectClass)?
__________________
Грамотно поставленный вопрос содержит не менее 50% ответа.
Грамотно поставленная речь вызывает уважение, а у некоторых даже зависть.
Ответить с цитированием