提供的拉姆达申报不正确数量的参数 [英] Incorrect number of parameters supplied for lambda declaration

查看:353
本文介绍了提供的拉姆达申报不正确数量的参数的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

请看看我的code:我试图创建 myCar 用防爆pression树

Please have a look at my code: I'm trying to create myCar with an Expression Tree.

我得到一个的ArgumentException 在这一行变种M =前pression.Lambda< Func键<发动机,... 该消息的错误数量的拉姆达声明提供的参数的。

I get an ArgumentException on this line var m = Expression.Lambda<Func<Engine,... The message is Incorrect number of parameters supplied for lambda declaration.

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();
    }
}

我无法弄清楚什么是错的,在那里我做了错误。先谢谢了。

I can't figure out what's wrong and where I did the error. Thanks in advance.

推荐答案

您必须指定引擎PARAMS ParameterEx pression []参数'前pression.Lambda的一部分

You must specify the engine in the 'params ParameterExpression[] parameters' part of Expression.Lambda

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

这篇关于提供的拉姆达申报不正确数量的参数的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆