我正在编写一个 ORM 框架并陷入了从类名自动确定表名的方式中。在我的 ORM 工作的基础对象中,我有:
TghModel = class
...
class var FTableName: String;
class constructor Create;
...
其实现是:
class constructor TghModel.Create;
begin
FTableName := ClassName;
Delete(FTableName,1,1); // Delete 'T'
end;
我的假设是 ClassName 方法将返回真实的类名。例如,如果我有:
TUsers = class(TghModel)
那么FTableName将被初始化为TUsers而不是TghModel,这是错误的。我想避免用户为从 TghModel 继承的每个类创建类构造函数,特别是因为内容与 TghModel.Create 中的内容完全相同。有没有办法实现它?
PS:我使用 Free Pascal 作为我的编译器