我有TLuaClassTemplate<T: TControl, constructor> = class
類,並試圖使用它的方法class procedure RegisterClass(L: Plua_State; p: TPrintProc; container: TComponent; vm: TLuaVm); static;
與存儲在TDictionaryTControlClass作爲一般的TControl參數?
TClassNameToComponentDict = TDictionary<string, TControlClass>;
TClassNameToComponentPair = TPair<string, TControlClass>;
...
ClassNameToComponent := TClassNameToComponentDict.Create;
ClassNameToComponent.Add('TButton', TButton);
ClassNameToComponent.Add('TPanel', TPanel);
ClassNameToComponent.Add('TEdit', TEdit);
TControlClass引用但我有嘗試的問題,用它
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這裏泛型參數?
謝謝,並不斷問好問題。我繼續投票,因爲他們問得很好,很有趣! – 2013-03-24 17:14:11