为lambda声明提供的参数数量不正确

请看一下我的代码:我正在尝试用表达式树创建myCar

我在这行上得到一个ArgumentException var m = Expression.Lambda<Func<Engine,...消息是为lambda声明提供的参数数量不正确

 public class Engine { public string Name { get; private set; } public Engine(string name) { Name = name; } } public class Car { private readonly Engine engine; public Car(Engine engine) { this.engine = engine; } public string GetEngineName(){return engine.Name;} } class Program { static void Main(string[] args) { var ci = typeof (Car).GetConstructor(new[] {typeof (Engine)}); var engine = Expression.Parameter(typeof (Engine)); var m = Expression.Lambda<Func>(Expression.New(ci, engine)) .Compile(); var myCar = m(new Engine("TDI 2.0")); var s = myCar.GetEngineName(); } } 

我无法弄清楚出了什么问题以及我在哪里犯了错误。 提前致谢。

您必须在Expression.Lambda的’params ParameterExpression [] parameters’部分中指定引擎

 var m = Expression.Lambda>(Expression.New(ci, engine), engine)