提供的拉姆达申报不正确数量的参数 [英] Incorrect number of parameters supplied for lambda declaration
本文介绍了提供的拉姆达申报不正确数量的参数的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
请看看我的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屋!
查看全文