Я храню небольшие интерфейсы из ряда объектов в одном «хранилище» TInterfaceList с намерением предложить список определенных типов интерфейсов конечному пользователю, поэтому каждый интерфейс будет предоставлять функцию «GetName», но все другие методы являются уникальными для этого типа интерфейса. Например, вот два интерфейса:
IBase = interface
//----------------------------------------
function GetName : string;
//----------------------------------------
end;
IMeasureTemperature = interface(IBase)
//------------------------------------
function MeasureTemperature : double;
//----------------------------------------
end;
IMeasureHumidity = interface(IBase)
//----------------------------------------
function MeasureHumidity: double;
//----------------------------------------
end;
Я поместил несколько из этих интерфейсов в один TInterfaceList, а затем я хотел бы отсканировать список для определенного типа интерфейса (например, «IMeasureTempera»), создав еще один список указателей на объекты, экспортирующие эти интерфейсы. Я не хочу делать предположений о расположении этих объектов, некоторые могут экспортировать более одного типа интерфейса. Я знаю, что мог бы сделать это с помощью иерархии классов, используя что-то вроде:
If FList[I] is TMeasureTemperature then ..
но я бы хотел сделать что-то похожее с типом интерфейса. Возможно ли это?