【发布时间】:2015-07-31 20:54:19
【问题描述】:
我有一些具有不同返回类型的表达式存储在List<LambdaExpression> 中。我需要能够将这些表达式传递给一组我无法控制但只接受Expression<Func<T, retT>> 类型的参数的方法。任何想法我怎么能做到这一点?示例代码如下:
//These 3 methods are not under my control, can't change them :(
public void DoIt(Expression<Func<Record, string>> expr) { ... }
public void DoIt(Expression<Func<Record, int?>> expr) { ... }
public void DoIt(Expression<Func<Record, DateTime?>> expr) { ... }
public class Record {
public string Member1;
public int? Member2;
public DateTime? Member3;
}
Expression<Func<Record, string>> expr1 = r => r.Member1;
Expression<Func<Record, int?>> expr2 = r => r.Member2;
Expression<Func<Record, DateTime?>> expr3 = r => r.Member3;
var myList = new List<LambdaExpression>() {
expr1, expr2, expr3
};
//later...
foreach (var expr in myList)
{
DoIt(expr);
}
【问题讨论】:
-
你在写doit吗?
-
不,我不能改变它。
-
MarcinJuraszek 解决方案是正确的。