【问题标题】:How to tell when somebody is reading an item from a CollectionBase如何判断某人何时从 CollectionBase 读取项目
【发布时间】:2011-06-22 22:35:37
【问题描述】:

我不确定这是否可以使用 CollectionBase 类。我想知道何时有人访问 CollectionBase 类中的项目。

最终目标是创建一个“VirtualMode”(类似于 DataGridView 控件),允许我在用户获取数据之前检查和验证数据。

所以会发生什么,他们可以创建一个包含 20 个对象的集合,在内部我们修改 IList 以包含 20 个空对象,然后当他们尝试读取一个项目时,如果它为空,我们转到外部数据来源并在当时阅读。然后我们用读取的类替换现有的空对象,下次他们尝试访问它时,他们会得到缓存的版本。

在输入之后。我想知道 OnValidate 是否适合这样做。

任何帮助将不胜感激。

特雷弗·沃森

【问题讨论】:

  • 你用的是什么版本的c#?
  • 他们如何尝试阅读该项目?按索引?

标签: c# ilist virtualmode collectionbase


【解决方案1】:

CollectionBase 是不可能的。 OnValidate() 仅在 OnInsert()OnRemove()OnSet() 之前调用。

您可以从 ArrayList 继承并覆盖索引器属性 (ArrayList.Item)。

【讨论】:

  • ArrayList 是我想要的。谢谢。我习惯于使用 CollectionBase,但是 ArrayList 有 public override object this[int index] 这正是我需要做的关于 ArrayList 我刚刚注意到的另一件事是它不能被强类型化。但这对我来说真的很好。
【解决方案2】:

看起来您正在寻找一个虚拟化集合。 CodeProject 上的This article 有一个很好的实现(它旨在用于 WPF 中的数据绑定,但它可能可以在其他上下文中使用)

【讨论】:

    猜你喜欢
    • 2017-05-05
    • 1970-01-01
    • 2021-07-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-05
    相关资源
    最近更新 更多