gpt4 book ai didi

delphi - 将泛型类型的成员强制转换为 TObject?

转载 作者:行者123 更新时间:2023-12-03 18:08:46 26 4
gpt4 key购买 nike

我目前正在考虑一个场景,我想要一个通用类,它在其项目上调用 Free IF 这些都是对象类型。所以我尝试了以下方法:

if (PTypeInfo (TypeInfo (T)).Kind = tkClass) then
begin
RttiType := RttiContext.GetType (TypeInfo (T));
FreeMethod := RttiType.GetMethod ('Free');
if (FreeMethod <> nil) then
FreeMethod.Invoke (FInstance, []);
end;

不幸的是,最后一行没有编译,这并不奇怪,因为类型不匹配。问题是:我可以编译它吗?我尝试转换为 Pointer,然后转换为 TObject,但这给了我无效的类型转换错误。有什么方法可以将 FInstance : T 放入一个 TObject 引用中,然后我可以将其传递给 Invoke

或者有没有其他方法可以实现我想要的?请注意,重点是获取此类中的所有内容,因此我不想创建一个仅获取对象的 TObjectMyClass

感谢您的帮助。

最佳答案

这还不够吗?

if PTypeInfo(TypeInfo(T))^.Kind = tkClass then
TObject(FInstance).Free;

关于delphi - 将泛型类型的成员强制转换为 TObject?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5075354/

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