0

我有一个名为ILoader. 这是一种加载资源文件的对象。

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

非常简单。现在,我想要多种类型Loader的 TSurfaceLoader、TSoundLoader、TMusicLoader 等。

问题是,我如何指定interface从函数返回的内容?将SurfaceLoader加载 Surfaces,但 aSurface不是 a TObject,因此它不起作用。

我该怎么办?把界面全部扔掉?(我可能会扩展它,它不会总是这么小。)

4

1 回答 1

0

接口是一个精确的契约,可以期待什么,所以你不能让它可变。

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

something_of_tsurfaceloader:=TSurfaceLoader(myILoaderIntf.GetObject);

设计出界面可能更好与否,这取决于。这些日常选择让程序员的生活变得有趣:)

于 2013-04-17T07:32:15.607 回答