3

我刚开始玩 Linq Expressions 并且碰壁了。我需要从一个动作创建一个表达式树。不幸的是,我无法将动作作为表达式,这基本上是我必须使用的:

public void Something(Action action){}

我需要访问 Action 的主体来提取变量和值。

4

1 回答 1

4

一个Action不是一个Expression;它只是一个委托(在某些时候可能是一个表达式,可能是一个 lambda,也可能不是)。

为了使这个可行,您需要重构:

public void Something(Expression<Action> action) {...}

此外,C# 3.0 / .NET 3.5 lambda 表达式不适用于Action-type 表达式。你能表达的东西非常有限。Func-type 表达式效果更好。在 .NET 4.0 (CTP) 中,这里有更多的灵活性,尽管仍然不清楚该语言 (C# 4.0) 将通过 lambdas 提供什么。

基本上,我不确定您是否可以(方便地)做您希望使用Expression.

于 2008-11-10T15:49:32.723 回答