【发布时间】:2019-07-24 11:08:43
【问题描述】:
...反之亦然。假设我无法控制两个类,它们都继承自同一个基类:
TDataSet1 = class(TDataSet)
...
end;
TDataSet2 = class(TDataSet)
...
end;
我有一个这样的接口声明:
IMyDataSet = interface
procedure MyProc;
end;
然后我有两个类继承了之前的类并实现了我的接口:
TMyDataSet1 = class(TDataSet1, IMyDataSet)
procedure MyProc;
end;
TMyDataSet2 = class(TDataSet2, IMyDataSet)
procedure MyProc;
end;
现在我的问题是:我有一堆过程和函数,它们必须接受一个对象作为参数,该对象可以是我的两个类的实例。
我不需要访问特定于我的两个类或祖先类的属性或方法,只需要访问基类TDataSet 和在接口IMyDataSet 中声明的那些。
如果我这样声明一个过程:
procedure Foo(ADataSet: TDataSet);
我只能调用来自TDataSet 类的方法。
如果我以这种方式声明过程:
procedure Foo(ADataSet: IMyDataSet);
我只能看到属于该接口的方法。
有什么方法可以让我在传递给程序的引用上看到TDataSet 和IMyDataSet 方法?
【问题讨论】: