我想将方法中的逻辑转换为Expression,以便我可以存储它,并在需要时可以编译它以便执行。
该方法具有类似
的流程1)采用参数
2)对传入参数
的集合属性执行'FirstOrDefault'3)在存储库类上调用一些方法
4)一些条件
5)创建/实例化某些字段
等等。在所有复杂的方法中做了很多事情。
问题:是否有任何文章/资源可以通过示例向我展示。
由于
答案 0 :(得分:1)
MSDN出了什么问题?您可以在此处找到示例(位于页面底部): http://msdn.microsoft.com/en-us/library/bb397951.aspx
这样的事情:
static Expression<Action<IEnumerable<int>>> BuildExpression()
{
ParameterExpression param1 = Expression.Parameter(typeof(IEnumerable<int>), "param1");
Expression<Func<IEnumerable<int>, int>> firstOrDefault = collection => collection.FirstOrDefault();
Expression body = Expression.Condition(
Expression.LessThan(
Expression.Invoke(firstOrDefault, param1),
Expression.Constant(10)),
Expression.Call(
typeof(Console).GetMethod("WriteLine", new [] { typeof(string) }),
Expression.Constant("Less")),
Expression.Call(
typeof(Console).GetMethod("WriteLine", new [] { typeof(string) }),
Expression.Constant("Greater or equal"))
);
return Expression.Lambda<Action<IEnumerable<int>>>(body, new[] { param1 });
}