delphi – 在TDictionary中使用“class of”?
发布时间:2020-12-15 09:18:31 所属栏目:大数据 来源:网络整理
导读:想法很简单 – 将带有类名的TDictionary用于TComponent for enum in vm.ClassNameToComponent do TLuaClassTemplateenum.Value.RegisterClass(vm.LS,PrintGlobal,container,vm); 用enum而不是 TLuaClassTemplateTButton.RegisterClass(vm.LS,vm);TLuaClassTe
想法很简单 – 将带有类名的TDictionary用于TComponent
for enum in vm.ClassNameToComponent do TLuaClassTemplate<enum.Value>.RegisterClass(vm.LS,PrintGlobal,container,vm); 用enum而不是 TLuaClassTemplate<TButton>.RegisterClass(vm.LS,vm); TLuaClassTemplate<TPanel>.RegisterClass(vm.LS,vm); TLuaClassTemplate<TEdit>.RegisterClass(vm.LS,vm); ... 并使用从xml中获取的类名来处理基于泛型的类. TClassNameToComponentDict = TDictionary<string,TComponent>; ... ClassNameToComponent: TClassNameToComponentDict; ... ClassNameToComponent := TClassNameToComponentDict.Create; ClassNameToComponent.Add('TButton',TButton); ClassNameToComponent.Add('TPanel',TPanel); ClassNameToComponent.Add('TEdit',TEdit); ... 错误“不兼容的类型’TComponent’和’类TButton’”. 解决方法
您使用的类型
TDictionary<string,TComponent> 表示从字符串到类实例的映射.但是你想要一个从字符串到类的映射.所以你需要: TDictionary<string,TComponentClass> 哪里 TComponentClass = class of TComponent 请注意,您不需要声明TComponentClass,因为它已在Classes单元中声明. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |