Linq表达评估

时间:2011-03-23 13:45:03

标签: c# linq expression

我有一个函数,它将Expression<Func<T>>作为参数并返回一个自定义类

MyExpressionInfo GetExpressionInfo<T>(Expression<Func<T>> expression)

给定任何表达式,假设表达式“指向”一个属性,如何获取表达式中最终属性的PropertyInfo以及具有该PropertyInfo的对象实例。

实施例

var info = GetExpressionInfo(myObject.AProperty);
var info2 = GetExpressionInfo(GetSomething().AProperty);
var info3 = GetExpressionInfo(GetSomethingElse().AProperty.GetThirdThing().AProperty);

所以在上面我希望结果是

  • myObject作为参考,PropertyInfo for AProperty作为属性
  • 以GetSomething()为参考的结果,将属性的PropertyInfo作为属性
  • GetSomethingElse()的结果.AProperty.GetThirdThing()作为参考

我可以像第一部分那样获得PropertyInfo

        MemberExpression memberExpression = (MemberExpression)expression.Body;
        PropertyInfo boundPropertyInfo = memberExpression.Member as PropertyInfo;

        if (boundPropertyInfo == null)
            throw new ApplicationException("Bound expression does not resolve to a Property");

如何解析表达式其余部分的值?

0 个答案:

没有答案