我正在尝试创建一个泛型函数来处理带有其他参数表达式的记录(List,IEnumerable等)。
static SelectList MyFunction<TModel, TValue, TText>(IEnumerable<TModel> records, Expression<Func<TModel, TValue>> val, Expression<Func<TModel, TText>> text)
通过使用MemberExpression和反射进行解析来处理这一点并不困难:
MyFunction(records, e => e.Id, e.Name)
但是当使用一些复杂的语句时,实际的实现变得更加复杂:
MyFunction(records, e => e.Id, e => e.Name?? e.Code)
MyFunction(records, e => e.Id, e => String.IsNullOrWhiteSpace(e.Name)? e.Code : e.Name)
如果不为每种类型的表达式节点制作过多的解析器,还有其他方法可以处理这些吗?