我在Delphi XE,Windows 7中工作。
在应用程序中,我想为我的用户选择不同的报告类型。为此,我有 1 个基本报告类和每个报告类型(xml、csv、ppt 等)的子类。
{Just an illustrating example}
TBaseReport = class
public
constructor Create;
procedure GenerateReport; virtual; abstract;
class function ReportType: string; virtual; abstract;
end;
T*Report = class(TBaseReport);
//Etcetera.
我想要做的是使用 Rtti 来检测所有报告类并列出它们的 ReportType。之后,我想使用 Rtti 创建所选报表类的实例并调用 GenerateReport。总而言之,这并不太难实现。
但是有一个主要缺点:我从不对降级类的使用进行硬编码,因此代码不会包含在可执行文件中。
有没有一种体面的方法可以强制链接器/编译器包含这些类?
一个(n丑陋的)解决方法是在其初始化部分模拟报告的使用,但我宁愿不这样做。更好的解决方案是使基类持久化并调用 'RegisterClass(T*Report);' 在初始化部分。它有效,但我认为没有任何其他需要让它们持久化,所以再次,我宁愿不这样做。另一方面,也许这是唯一的方法?
提前致谢。