FreePascal接口:将返回“任何”的函数

时间:2013-04-16 21:20:17

标签: function interface pascal

我有一个名为ILoader的界面。这适用于加载资源文件的一种对象。

ILoader = interface
    function Load: TObject;
    function FormatName: String;
  end;

非常简单。现在,我希望有多种类型的Loader,TSurfaceLoader,TSoundLoader,TMusicLoader等。

问题是,如何在interface中指定从函数返回什么? SurfaceLoader会加载曲面,但Surface不是TObject,因此无效。

我该怎么办?只是抛弃界面? (我可能会扩展它,它不会总是那么小。)

1 个答案:

答案 0 :(得分:0)

界面是精确的契约,所以你不能让它变量。

解决方案就是简单地进行类型转换:

something_of_tsurfaceloader:=TSurfaceLoader(myILoaderIntf.GetObject);

设计界面可能更好或没有,这取决于。那些日常的选择使得程序员的生活变得有趣:)