【问题标题】:db4o - how to query generic interfacedb4o - 如何查询通用接口
【发布时间】:2012-02-24 11:24:24
【问题描述】:

我没有找到任何地方是否可以从 Db4o 查询所有实现某些通用接口的对象

例如: 查询所有实现IList<T>的对象,我试过:

var items = from IList<object> item in session
            select item;

但这不会返回数据库中的所有列表(仅返回具体实现 IList&lt;object&gt; 的列表)

除了从数据库中查询所有对象,循环它们并手动评估对象之外,还有其他方法吗? (在这种情况下,我必须穿过数百万个物体)

谢谢

【问题讨论】:

    标签: c# linq generics db4o generic-list


    【解决方案1】:

    您想查询所有 IList 类型实例的所有对象。或其他服装通用类型。

    在我看来,目前这是不可能的。原因是 db4o 将 List 的每个实例都视为自己的类型。所以 List 和 List 存储了两种不同的类型。这直接涉及到 db4o 中的元数据存储,它们是单独存储的。这也意味着不同 List 类型的所有实例都没有共享索引。

    顺便说一句,Java 中正好相反,所有类型的 List 都被视为同一类型,因为在 Java 中泛型不会在运行时反映。

    因此,您基本上需要自己检查所有不同类型的 List 以获取所有实例。

    对于您自己的类型,我将创建一个泛型实例继承的抽象非泛型类。然后您可以查询并获取所有通用子类型。请注意,这不适用于接口,因为 db4o 不会索引或保留接口的元信息。

    【讨论】:

    • 我明白了。有点遗憾,这将是一个很棒的功能。还是谢谢你的回答
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多