gpt4 book ai didi

delphi - 如何在Delphi中扩展通用集合?

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

我有一个像这样的通用集合:

TFoo = class;

TFooCollection<T: TFoo> = class(TObjectDictionary<string, T>)
procedure DoSomething;
end;

效果很好。

现在我需要像这样扩展TFooCollection:

TBar = class( TFoo );   

TBarCollection<T: TBar> = class(TFooCollection)
procedure DoSomethingElse;
end;

编译器提示 TFooCollection 未定义。由于 TBar 继承自 TFoo,因此我想利用 TFooCollection 方法(可与 TFoo 和 TBar 项一起使用)并仅使用 TBar 集合执行其他操作。

在Delphi中可以吗?

最佳答案

您知道如何扩展通用集合 TObjectDictionary ,因此在扩展通用集合 TFooCollection 时只需应用相同的技术即可。 TObjectDictionary本身并不指定类型 - 您需要为其两个泛型类型参数提供值。您硬编码为 string ,以及您通过转发 TFooCollection 中收到的泛型类型参数提供的另一个。 .

同样,当指定 TBarCollection 的基本类型时,您可以为 TFooCollection 提供硬编码值输入参数,也可以从 TBarCollection 转发参数。您可能想做后者:

type
TBarCollection<T: TBar> = class(TFooCollection<T>)
end;

关于delphi - 如何在Delphi中扩展通用集合?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37730016/

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