クラスがあり、TDictionaryに保存されているTControlClass参照でTLuaClassTemplate<T: TControl, constructor> = class
そのメソッドを使用しようとしていますclass procedure RegisterClass(L: Plua_State; p: TPrintProc; container: TComponent; vm: TLuaVm); static;
TClassNameToComponentDict = TDictionary<string, TControlClass>;
TClassNameToComponentPair = TPair<string, TControlClass>;
...
ClassNameToComponent := TClassNameToComponentDict.Create;
ClassNameToComponent.Add('TButton', TButton);
ClassNameToComponent.Add('TPanel', TPanel);
ClassNameToComponent.Add('TEdit', TEdit);
しかし、私はそれを使おうとすると問題があります
enum: TClassNameToComponentPair;
ctx: TRttiContext;
cls: TControlClass;
begin
for enum in vm.ClassNameToComponent do begin
//TLuaClassTemplate<enum.Value>.RegisterClass(vm.LS, PrintGlobal, container, vm);
cls := TControlClass((ctx.FindType(enum.Key) as TRttiInstanceType).MetaClassType);
TLuaClassTemplate<cls>.RegisterClass(vm.LS, PrintGlobal, container, vm);
end;
現在表示されている(検索で見つかった)オプションとコメント付きのオプションの両方を試しました。しかし、エラーは動作Undeclared identifier: 'TLuaClassTemplate'
中TLuaClassTemplate<TButton>.RegisterClass(vm.LS, PrintGlobal, container, vm);
です。
ここでジェネリックパラメーターとしてTControlClassを使用するにはどうすればよいですか?