将TObjectlist转换为TObjectList <t>以在TObjectDataset中使用的过程

时间:2017-03-26 04:03:19

标签: delphi dataset spring4d

我想使用依赖于TObjectList&lt;&gt;的TObjectDataset (System.Generics.Collections / Spring.Collections)但只有一个TObjectList(System.Contnrs)。除了迭代对象和构建新的TObjectList&lt;&gt;之外还有什么方法吗?让这个工作?最后,我想将TObjectList耦合到Objectdataset以便绑定到UI。

2 个答案:

答案 0 :(得分:1)

你的问题有点不对劲。 Spring4d TObjectDataSet采用IObjectList接口,该接口是IList<T>的特化,其中TTObject

此合约与Contnrs.TObjectList匹配。因此,“简单地”为实现TObjectList的{​​{1}}创建一个包装类。我简单地引用了引号,因为这个接口有很多方法。您可以使用IObjectList作为已经实现了所有方法的适配器的基类。然后你只需要覆盖一些(看看TListBase<T>那些是哪些)。

要了解的一个重要细节是TList<T>需要知道列表中对象的确切类别。这是通过TObjectDataSet的{​​{1}}属性完成的。如果返回ElementType,虽然这不是很有帮助。所以你需要覆盖那个方法。

编辑:以下是此类适配器类的完整代码:

IObjectList

答案 1 :(得分:0)

  

除了迭代对象和构建新的TObjectList<T>以使其工作之外,还有什么方法吗?

没有。这两种类型不兼容。