我正在开发一个可以在几个类上工作的组件。为了允许添加托管类列表,我编写了一个TCollection的继承类,其中每个项(从TCollectionItem继承)都定义了一个已发布的"TargetClassName“属性。"TargetClassName“属性的setter函数调用以下函数来查找相应的TClass:
function FindAnyClass(const Name: string): TClass;
var
ctx: TRttiContext;
typ: TRttiType;
list: TArray<TRttiType>;
begin
Result := nil;
ctx := TRttiContext.Create;
list := ctx.GetTypes;
for typ in list do
begin
if typ.IsInstance and (EndsText(Name, typ.Name)) then
begin
Result := typ.AsInstance.MetaClassType;
break;
end;
end;
ctx.Free;
end;(感谢Dalija Prasnikar编写了函数Get class by its name in Delphi)。
现在,我想知道是否有更好的方法来允许在设计时向TCollectionItem添加类。你觉得那个怎么样?希望能读到有趣的解决方案!感谢所有人。
发布于 2015-04-12 19:47:23
在TCollection上创建时,您需要引入排序规则类1:在create time中硬编码X := TMycollation.Create(TMyCollationClass) 2: your solution X := way
https://stackoverflow.com/questions/29580609
复制相似问题