gpt4 book ai didi

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

转载 作者:太空狗 更新时间:2023-10-29 21:03:04 24 4
gpt4 key购买 nike

请看一下我的代码:我正在尝试创建 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();
}
}

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

最佳答案

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

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

关于c# - 为 lambda 声明提供的参数数量不正确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4758817/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com