2
私のアプリケーションは、必要なオブジェクトの実装を提供するパッケージを動的に読み込みます。私はインスタンス構造を動的に作成するために使用するリスト構造にオブジェクトクラスを登録するグローバル関数を持っています。初期化時に現在のパッケージ名を取得する
procedure RegisterObjectStd(const APackageName, AObjectName: string; const AClass: TClass);
これにより、私はファクトリメソッド
例を通じて特定のコンテキストを基準にしてインスタンスを作成することができますdinamically現在のパッケージ(の名前を取得する方法はあり
function CreateObject(const APackageName, AObjectName: string): TObject;
を。 bpl)私の初期化コードですか?
initialization
RegisterObjectStd(GetCurrentBplName, 'MyObjectName', TMyObjectClass);
'GetModuleName(HInstance)'についてはどうですか? –
これは、潜在的にパッケージ名と同じではないファイル名を取得します。良い例はバージョン管理されたパッケージです。例えば、 'rtl'という名前のパッケージは' rtl210.bpl'のようなファイル名を持つかもしれません。 –