我有一个名为IFilterDataSourceAdapter. 此接口公开 EndPoints 以适应传入数据源(IEnumrable<T>、iCollectionView或DataTable或DataView或XmlDocument),并提供直观过滤它们的功能。
- 它接受来自数据源的字段名称。
生成
FilterFields每个公开三个属性的列表- 字段名称
- 根据字段的筛选运算符列表
Type- 等于、包含、小于等。 - 提供的值字段。
GUI 可以使用此
FilterField列表来显示过滤器面板。- 适配器将提供自己的
ICommand以从 GUI 执行过滤器调用。
所以在适配器中,我想做以下
- 如果传入的数据源是类型,
IEnumrable<SomeClass>我会在应用过滤器时生成AsQueryable()Linq 表达式并返回查询IEnumrable<SomeClass>的列表。 - 如果传入的数据源是类型,
ICollectionView我将生成Filter委托并刷新集合视图。 - 如果传入的数据源是类型
DataTable,或者DataView我会生成DataFilter基于字符串的查询并刷新数据表或数据视图。 - 如果传入的数据源是类型
XDocument,它将产生XPath表达式和XElements过滤列表。
我想基于Generics上述类型的数据源来执行此操作,并Filter相应地区分命令执行。
我们可以IFilterDataSourceAdapter<T>基于 T 是IEnurable<SomeClass>or ICollectionViewor DataTableor or DataViewor来限制其成员(字段和函数)的单个接口XDocument吗?
编辑:
我当前的实现实际上是每种数据源的 5 种抽象适配器,它们工作正常。他们都实施IFilterDataSourceAdapter。但我认为也许我们可以IFilterDataSourceAdapter<T>使用约束而不是更适合每个适配器实现设计。所以可能是我已经很好了。
可能是我想太多了!!!