C# 自定义表达式树访问者-如何获取UnaryExpression节点';s值多少?
我对一元访问者有一个覆盖,它似乎工作得很好,但我需要从节点获取操作数的值 如果是恒压,则很容易实现:C# 自定义表达式树访问者-如何获取UnaryExpression节点';s值多少?,c#,expression-trees,C#,Expression Trees,我对一元访问者有一个覆盖,它似乎工作得很好,但我需要从节点获取操作数的值 如果是恒压,则很容易实现: var value = ((ConstantExpression) node.Operand).Value; 问题是,如果节点是一个值类型为int的MemberExpression,如何实现这一点: protected override Expression VisitUnary(UnaryExpression node) { //get the va
var value = ((ConstantExpression) node.Operand).Value;
问题是,如果节点是一个值类型为int的MemberExpression,如何实现这一点:
protected override Expression VisitUnary(UnaryExpression node)
{
//get the value stored in the node.Operand
}
无法保证
UnaryExpression
连接到常量值。。。在x=>(int)x
中,例如(int)
是一个未连接到常量值的UnaryExpression
但是。。。你可以检查一下它是否是
// Unravel (object)(long)5
while (node.Operand is UnaryExpression)
{
node = (UnaryExpression)node.Operand;
}
ConstantExpression ce = node.Operand as ConstantExpression;
if (ce != null)
{
// success!
object value = ce.Value;
}