Javaでリフレクションしたことあるし、Delphiでもしてーなーって。
っていうか、この仕様を実装するならリフレクションっしょ。
ってな感じで調べたー。
Delphiでリフレクションするには、まず、TRttiContextクラスをインスタンス化する。
ほいで、TRttiContextのメソッドにクラスタイプを指定して、クラスを特定する。
uses SysUtils, Rtti; var LContext: TRttiContext; LType: TRttiType; begin LContext := TRttiContext.Create(); try LType := LContext.GetType('クラス名'); finally LContext.Free; end; end;
みたいな。
ほいで、LTypeに対してメソッドやらフィールドやらプロパティやらちょーだいーゆーて。
var LMethod: TRttiMethod; LField: TRttiField; LProperty: TRttiProperty; begin LMethod := LType.GetMethod('メソッド名'); LField := LType.GetField('フィールド名'); LProperty := LType.GetProperty('プロパティ名'); end;
ほいで、あとは、
LMethodをInvokeして実行したり、
LFieldをGetValueしたり、
LPropertyにSetValueしたり。
いろいろできちゃう下地ができましたよーってな感じで、以上。