gpt4 book ai didi

.net - 表达式 : Variable referenced from scope, 但未定义异常

转载 作者:行者123 更新时间:2023-12-02 14:44:17 24 4
gpt4 key购买 nike

我对 System.Linq.Expresions 还很陌生,我正在尝试找出这段代码有什么问题:

 var mc = new MyClass();

ParameterExpression value = Expression.Parameter(typeof(object), "value");
ParameterExpression xParam = Expression.Parameter(typeof(MyClass), "x");

Expression<Func<MyClass, object>> e = x => x.Val;

BlockExpression block = Expression.Block(new[] { xParam, value },
Expression.Assign(e.Body, value));

Expression.Lambda<Action<MyClass, object>>(block, xParam, value).Compile()(mc, 5); //I'm getting exception here when Compile()

...

class MyClass
{
public object Val
{
get;
set;
}
public object OtherVal
{
get;
set;
}
}

我只是想构建类似 mc.Val = 5 的东西,假设 MyClass 和对象参数是 lambda 的参数(我不想使用闭包)

最佳答案

e.Body 引用来自 e 的参数。但这是与 xParam 不同的参数。两者同名还不够。它们必须是同一个对象。

在理解中,您尝试使用 lambda 作为生成表达式的工具来获取表达式。要使该方法发挥作用,您需要将 e 中的所有参数替换为您控制的参数 (xParam)。你必须保持一致。

关于.net - 表达式 : Variable referenced from scope, 但未定义异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13690653/

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