gpt4 book ai didi

delphi - 在运行时将对象强制转换为其父对象

转载 作者:行者123 更新时间:2023-12-03 19:00:14 24 4
gpt4 key购买 nike

我通过了TObject。我知道该对象来自TBaseClass。我要做的是显示直到TBaseClass为止每个类的所有已发布属性。可能有更好的方法可以做到这一点,但是我正在尝试的是:

lObj := aObject;
while lObj.ClassType <> TBaseClass do
begin
lRttiType := lRttiContext.GetType(aObject.ClassType);
lProps := lRttiType.GetDeclaredProperties;

lStartIdx := Length(lAllProps);
SetLength(lAllProps, Length(lAllProps) + Length(lProps));

for I := Low(lProps) to High(lProps) do
lAllProps[lStartIdx + I] := lProps[I];

lObj := lObj as lObj.ClassParent;
// lObj := lObj.ClassParent.InitInstance(lObj); // *see below
end;


这段代码的问题是 lObj.ClassTypelObj as lObj.ClassParent之后不会更改。有人可以解释为什么这行不通并提供行之有效的东西吗?

*这似乎起作用,因为它使lObj.ClassType成为父级的类,但是这会导致问题,后来我阅读了文档,发现甚至不应该首先调用它。

最佳答案

您只需要对类类型进行循环。

lObj := aObject.ClassType;
while ....
...
lObj := lObj.ClassParent;
end;


有关示例,请参见文档: ClassParent

关于delphi - 在运行时将对象强制转换为其父对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22539993/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com