Dmi*_*par 4 .net linq lambda expression
我是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;
}
}
Run Code Online (Sandbox Code Playgroud)
我只想构建类似mc.Val = 5的东西,假设MyClass和object参数是lambda的参数(我不想使用闭包)
e.Body引用参数e.但这是一个不同的参数xParam.这两个人的名字相同是不够的.它们必须是同一个对象.
在理解中,您尝试使用lambdas作为生成它们的工具来获取表达式.要使用该方法,您需要e使用您控制的参数(xParam)替换所有参数.你必须保持一致.
| 归档时间: |
|
| 查看次数: |
2140 次 |
| 最近记录: |