我有一个名为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 ICollectionView
or DataTable
or or DataView
or来限制其成员(字段和函数)的单个接口XDocument
吗?
编辑:
我当前的实现实际上是每种数据源的 5 种抽象适配器,它们工作正常。他们都实施IFilterDataSourceAdapter
。但我认为也许我们可以IFilterDataSourceAdapter<T>
使用约束而不是更适合每个适配器实现设计。所以可能是我已经很好了。
可能是我想太多了!!!