gpt4 book ai didi

delphi - 检查对象是否继承自泛型类

转载 作者:行者123 更新时间:2023-12-03 15:45:53 26 4
gpt4 key购买 nike

我有一个通用列表类:

TMyObjectlist<T: TMyObject> = class(TObjectList<T>);

和派生列表类:

TMyDerivedObjectList = class(TMyObjectList<TMyDerivedObject>);

我想检查 TMyDerivedObjectList 的实例 MyList 是否继承自 TMyObjectList,但是:

MyList.InheritsFrom(TMyObjectlist<TMyObject>)

返回 False。

事实证明,MyList.Classparent 的类型为 TMyObjectList<TMyDerivedObject> .

有人知道在这种情况下如何检查 InheritsFrom 吗?

最佳答案

只需为两个列表对象制定继承方案,您就会清楚地明白为什么 InheritsFrom 不起作用。在 Generics.Collections 中,我们有:

TEnumerable<T> = class abstract;
TList<T> = class(TEnumerable<T>);
TObjectList<T> = class(TList<T>);

在您的示例中,我们有:

TMyObject = class;
TMyDerivedObject = class(TMyObject);

所以我们得到了这两个继承树:

TObject
|
TEnumerable<TMyDerivedObject>
|
TList<TMyDerivedObject>
|
TObjectList<TMyDerivedObject>

然后我们有:

TObject
|
TEnumerable<TMyObject>
|
TList<TMyObject>
|
TObjectList<TMyObject>

如您所见,这两种列表类型的唯一共同祖先是 TObject!

关于delphi - 检查对象是否继承自泛型类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3093759/

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