私は 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 は TghModel ではなく TUsers に初期化されますが、これは誤りです。ユーザーが TghModel を継承するクラスごとにクラス コンストラクターを作成することは避けたいと思います。特に、コンテンツは TghModel.Create とまったく同じになるためです。それを実装する方法はありますか?
PS: コンパイラとして Free Pascal を使用しています