通过classType参数进行类型转换

时间:2018-10-12 17:50:39

标签: delphi

我如何使用对象typecast参数制作一个classType

(obj as obj.classType).items[i]...//obj.classType = TList<myType>

此代码被编译器拒绝。但是,此外,无论对象具有什么类(TList),我都需要访问该对象的属性:

system.classes.TList
system.generics.collections.TList<T>

程序中有一个实际上属于类TList<T>的对象,我担心转换为system.classes.TList类型的对象可能会导致程序中的某些错误。

1 个答案:

答案 0 :(得分:1)

不可能像这样打字。那是因为Delphi是一种静态类型的语言。

想象一下,您可以编写如下代码:

(obj as obj.classType).items

由于obj.classType的值在编译时未知,因此编译器无法在编译时知道items是否存在,更不用说如何访问它了,等等。

对于您有关列表类的目标,泛型和非泛型列表类型在TObject之外没有共同的祖先。您尝试的事情根本不可能。

无论您遇到什么问题,都需要找到其他解决方案。