一些麻烦UnaryExpression
秒。
这个工作是这样的:
Expression<Func<List<string>, object>> k = l => l.Count;
//got member in this case like this
var member = ((k.Body as UnaryExpression).Operand as MemberExpression).Member;
另外,在上述情况下, k.Body.NodeType
是ExpressionType.Convert
。 但它是一个有点棘手与ExpressionType.ArrayLength
。 我该如何获得PropertyInfo
member
同样在以下情况下?:
Expression<Func<string[], int>> k = l => l.Length;
var member = ??
在第二种情况下k.Body
是一样的东西ArrayLength(l)
。
我可以用这样一个黑客做到这一点:
var member = (k.Body as UnaryExpression).Operand.Type.GetProperty("Length");
但这并不觉得自己是一个直接的表达方式 。 它更像是一个普通的老电话反映脏串“长度”过去了。 有没有更好的办法?