Я предполагаю, что вы хотите, чтобы функция CoWorker
возвращала IEmployee
для клиентов этого интерфейса.
Однако у кода реализации иногда есть веская причина для доступа креализующий объект.Конечно, это создает связывание, которое может быть нежелательным.
Начиная с Delphi 2010, вы можете использовать оператор as
для получения доступа к объекту реализации.
var
EmpIntf: IEmployee;
EmpImp: TEmployee;
...
EmpImp := EmpIntf as TEmployee;
Остерегайтесь того, что вы теперь подрываете управление временем жизни объекта.Если вы обращаетесь к EmpImp
после того, как ссылка на интерфейс обнуляется, у вас возникают проблемы.
Наконец, я хотел бы прокомментировать, что использование такого подхода имеет неприятный запах.Обычно лучше найти подход, который не использует as
таким образом.