【发布时间】:2010-06-02 15:32:19
【问题描述】:
我将来自一系列对象的小接口存储到单个 TInterfaceList“存储”中,目的是向最终用户提供特定接口类型的列表,因此每个接口都将公开一个“GetName”函数,但所有其他方法是该接口类型所独有的。例如这里有两个接口:
IBase = interface
//----------------------------------------
function GetName : string;
//----------------------------------------
end;
IMeasureTemperature = interface(IBase)
//------------------------------------
function MeasureTemperature : double;
//----------------------------------------
end;
IMeasureHumidity = interface(IBase)
//----------------------------------------
function MeasureHumidity: double;
//----------------------------------------
end;
我将其中几个接口放入一个 TInterfaceList 中,然后我想扫描该列表以查找特定接口类型(例如“IMeasureTemperature”),构建另一个指向导出这些接口的对象的指针列表。我不希望对这些对象的位置做出任何假设,有些可能会导出不止一种类型的接口。我知道我可以使用类似的类层次结构来做到这一点:
If FList[I] is TMeasureTemperature then ..
但我想做一些与接口类型类似的事情,这可能吗?
【问题讨论】:
-
您可能想澄清您的第一个列表是否包含实际接口types 或对实现这些接口的对象instances 的引用。到目前为止,似乎所有在这里回答的人都假设后者,而我读到你的问题来谈论前者......然后你又不能将接口 types 存储在
TInterfaceList......所以我可能错了……