我有一个像这样的Generic集合:
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 Collections做其他事情.
德尔福有可能吗?
解决方法
您知道如何扩展泛型集合TObjectDictionary,因此在扩展泛型集合TFooCollection时只需应用相同的技术. TObjectDictionary本身不指定类型 – 您需要为其两个泛型类型参数提供值.一个是硬编码为字符串的,另一个是通过转发TFooCollection中接收的泛型类型参数提供的.
同样,在为TBarCollection指定基本类型时,您可以为TFooCollection类型参数提供硬编码值,也可以从TBarCollection转发参数.你可能想做后者:
type TBarCollection<T: TBar> = class(TFooCollection<T>) end;
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。