我正在寻找有关如何处理有趣问题的帮助 .

我们有代码将构建表达式树(LINQ)来搜索/排序/分页强类型对象的集合 . 表达式树代码使用反射来构建表达式树,并且可以处理任何集合(只要它是强类型的) .

IEnumerable<T> Parse<T>(Request request, IQueryable<T> queryableData) where T: class
// Request Contains the searching/sorting/pagination criteria eg: FuzzySearch: "FindAnyObjectWithThis"

我们最近要求能够自定义搜索/排序的字段 . 基本上,用户可以动态选择列以包含/排除 . 为了实现这一点,我们首先使用动态对象(ExpandoObject),但这破坏了解析功能,因为没有用于反射的底层类型 .

  • 我们可以更改Parse以使用DynamicLinq来解析集合,但这需要我们更改Parse函数 .

  • 我们可以尝试动态构建一个类型并在检索原始数据时实例化该类型,但这可能会很慢 .

  • 我们没有想到的方法 .

还有其他人做过类似的事吗?你是怎么做到的?