我有一个名为IFilterDataSourceAdapter
的界面。此界面公开EndPoints以适应传入的数据源(IEnumrable<T>
,iCollectionView
或DataTable
或DataView
或XmlDocument
),并提供直观过滤它们的功能。
生成FilterFields
每个公开三个属性的列表
Type
筛选运算符列表 - 等于,包含,小于等。 GUI可以使用此FilterField
列表来显示过滤器面板。
ICommand
以从GUI执行过滤器调用。所以在你的适配器中,我想做以下
IEnumrable<SomeClass>
类型,我会在应用过滤器时生成AsQueryable()
Linq表达式并公开查询IEnumrable<SomeClass>
< / strong>列表回来。 ICollectionView
,我将生成Filter
委托并刷新集合视图。DataTable
或DataView
,我将生成DataFilter
基于字符串的查询并刷新数据表或数据视图。XDocument
,则会生成XPath
个表达式,并且XElements
列表已过滤。我希望基于Generics
约束上述类型的数据源来执行此操作,并相应地区分Filter
命令执行。
我们是否可以根据T为IFilterDataSourceAdapter<T>
或IEnurable<SomeClass>
或ICollectionView
或{{}为其成员(字段和函数)约束单个接口DataTable
1}}或DataView
?
修改
我目前的实现实际上是每种类型数据源的5种asbtract适配器,它们工作正常。它们都实现了XDocument
。但我认为可能我们可以使IFilterDataSourceAdapter
具有约束,而不是更适合每个适配器实现设计。所以我可能已经很好了。
可能是我在讨厌事情!!!
答案 0 :(得分:1)
可能不是答案,但评论时间太长......根据我对您的问题的理解,我会说你现在拥有的(具有不同接口的公共基本接口,每个接口都是特定于数据源)都可以。
我指的是你问题的这一部分:
我们可以使用单个接口
IFilterDataSourceAdapter<T>
吗? 基于T约束其成员(字段和函数) 是IEnurable<SomeClass>
或ICollectionView
或DataTable
或DataView
或XDocument
?
如果你的“通用”接口应该根据其通用参数T的类型指定不同的实现,那么接口实际上不是通用的,是吗?
使用泛型,你应该抽象出不同类型共有的行为,而约束应该只允许你更精确地定义你为这种常见行为定义的不同类型的集合。