내가 클래스 TLuaClassTemplate<T: TControl, constructor> = class
이 그것을 사용하려고은 TDictionary일반 TControl 매개 변수로 TControlClass?
TClassNameToComponentDict = TDictionary<string, TControlClass>;
TClassNameToComponentPair = TPair<string, TControlClass>;
...
ClassNameToComponent := TClassNameToComponentDict.Create;
ClassNameToComponent.Add('TButton', TButton);
ClassNameToComponent.Add('TPanel', TPanel);
ClassNameToComponent.Add('TEdit', TEdit);
에 저장 TControlClass 참조와 방법 class procedure RegisterClass(L: Plua_State; p: TPrintProc; container: TComponent; vm: TLuaVm); static;
이다 그러나 나는 (이
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를 제네릭 매개 변수로 어떻게 사용할 수 있습니까?
감사합니다. 계속 좋은 질문을합니다. 나는 그들에게 잘 질문하고 흥미 있기 때문에 투표를 계속한다! –