我有一个N层应用程序,我使用规范模式。现在,我想提供一些方法来构建客户端代码的规范。它必须是几个预定义的选项,如下所示:
这些对象(我称之为过滤器)不能包含任何逻辑(方法),只能包含数据 - 过滤器类型和参数。并且必须有自然的方式将它们转换为服务器规范。 以下是客户端应如何看待的示例:
var serviceClient = new DataModuleService();
var equalFilter = new ContainsFilter<Book>("Title","Lord of the Rings");
var lordOfTheRingBooks = serviceClient.GetBooks(equalFilter);
还必须有所有标准操作的过滤器类型(如Equal,Greater,In,Between,StartsWith for string等)以及将它们与布尔运算符(和,或不是)组合的方法。
是否有一些模式/标准实践来实现这样的事情?
UPD:此任务暂时冻结,我开始认为任务定义本身存在问题。
答案 0 :(得分:4)
只是一个高级答案 - 我相信你可以尝试LINQ表达式,它支持你提到的所有逻辑和条件运算符。查看System.Linq.Expressions命名空间以查看可用类型。
有用的链接:
答案 1 :(得分:2)
你想要做的事情听起来就像Hibernate正在用criteria queries做的那样。您可以combine them但是您想要构建您感兴趣的过滤器。
这不是C#,但Java and C#是类似的语言,所以也许你可以从中借用一些想法。
此外,您可以在the same criteria queries上使用.NET(NHibernate)上的Hibernate端口(虽然我不确切知道API是否与Java相同)。