【问题标题】:Incorrect number of parameters supplied for lambda declaration为 lambda 声明提供的参数数量不正确
【发布时间】:2011-01-21 12:31:47
【问题描述】:

请查看我的代码:我正在尝试使用表达式树创建 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<Engine,Car>>(Expression.New(ci, engine))
                          .Compile();

        var myCar = m(new Engine("TDI 2.0"));
        var s = myCar.GetEngineName();
    }
}

我不知道哪里出了问题以及哪里出错了。提前致谢。

【问题讨论】:

标签: c# .net lambda expression-trees


【解决方案1】:

您必须在 Expression.Lambda 的“params ParameterExpression[] 参数”部分中指定引擎

var m = Expression.Lambda<Func<Engine, Car>>(Expression.New(ci, engine), engine)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多