代码之家  ›  专栏  ›  技术社区  ›  Lasse V. Karlsen

ITypedList备选方案?

  •  1
  • Lasse V. Karlsen  · 技术社区  · 16 年前

    我有一个实现ITypedList的帮助程序类,用于为针对自定义集合的数据绑定提供对象。

    我的实现允许我轻松地指定我希望对象的子属性可用于数据绑定,例如,我可以绑定到“id”、“name”以及“children.count”。

    现在,我的问题是,为了向绑定到这些列的数据提供助手对象,我需要用这些对象预填充集合,然后当网格通过接口请求这些助手对象时,它将对我的对象调用一个方法来检索它们。

    它调用的方法有一个参数,可以用来指定要检索哪些访问器对象,但是对于.NET DataGridView类,它总是为空,这意味着我只需要返回我得到的所有对象。

    所以我的问题是。是否有一个ITypedList的替代方案,我可以在其中明确地被告知网格感兴趣的属性,以便不必预先填充Accessor对象集合?

    下面是我的代码:

    var wrapper = new TypedListWrapper<Person>(someNormalCollectionClass);
    wrapper.BindableProperties = "Id;Name;Children.Count";
    grid.DataSource = wrapper;
    

    以下是我想要的样子:

    grid.DataSource = new TypedListWrapper<Person>(someNormalCollectionClass);
    

    有接受者吗?

    1 回复  |  直到 16 年前
        1
  •  4
  •   Adam Robinson    16 年前

    如果要创建自己的网格,那么当然可以实现类似这样的功能,但不能使用 DataGridView (或者,我可以想象,任何当前的第三方网格控制)。我也会对设计时间的限制保持警惕。如果 PropertyDescriptor 初始化是引起您关注的原因,那么我建议您加载 属性描述器 仅具有名称和类型并具有实际 使用 使它加载可能需要的任何其他信息。

    不过,总的来说,这些应该是廉价的操作。如果您对在合理时间内获得属性列表的能力感到性能焦虑,那么您可能需要检查架构中的瓶颈在哪里,并尝试找到解决瓶颈的方法。除此之外,我看不出你有什么选择。数据绑定系统从设计上来说是消费者不可知论的。绑定使用者无法指示他是否打算使用描述符。吃那样的东西真是个鸡头或鸡蛋头疼。