0

我有几个实现公共存储库接口的类,这些类中的一个方法是返回分页结果并采用

Expression<Func<T, bool>> OrderBy

我还创建了一个将使用存储库类的服务层,因为我已经阅读过将表达式对象从 UI 发送到服务层不是首选,所以我决定将它作为参数发送,如果我将它作为包含的字符串发送参数的名称如何将字符串转换为要在表达式对象中使用的属性,例如假设我有一个名为 User 的实体,我向方法发送一个名为“UserName”的参数,我该如何转换“用户名”要变成“用户名”属性,可以在 Expression> OrderBy 对象中使用?

如果可能的话,你能告诉我一个更合适的分类方法吗?

4

1 回答 1

0

而不是接收Expression<Func<T, bool>>您的服务可以接收Func<IQueryable<T>, IQueryable<T>>更灵活(启用任何 LINQ,而不仅仅是在哪里)并且不需要表达式所做的额外工作。

如果您想防止滥用(例如代码注入),则改为将枚举(或字符串)(包含 sortby 参数)传递给服务并让您的服务相应地构建查询。

我希望 UI 不是指实际的 UI,而是指 VM 或控制器,并且您的视图不知道它们下面的任何内容。

于 2012-06-18T23:08:26.487 回答