获得表达的根源

时间:2013-07-28 19:14:32

标签: c# .net

让我马上给你看一些代码:

class MyClass {

    public MyClass(Customer c) {
        ExtractRoot(() => c.FirstName);
    }
}

ExtractRoot正在接受Expression<Func<object>>作为参数。

我正在尝试从表达式树中提取客户对象“c”。我将它传递给ExtractRoot方法,我知道如何获得代表客户对象的ConstantExpression。但是,当我在该对象上调用ToString()时,我会将其打印出来:
MyAssemblyName.CustomNamespace.MyClass + LT;&GT; c__DisplayClass2

有人可以解释一下这意味着什么以及为什么我没有得到客户的ToString()方法,就好像我得到的对象不是客户,为什么以及我得到什么回来?

最后,我如何获得实际的客户对象或表达的根源?

1 个答案:

答案 0 :(得分:0)

我找到了答案的完整解决方案,它有两个部分:

  1. 为什么DisplayClass及其含义可以在这个问题的答案中找到:What does “DisplayClass” name mean when calling lambda?
  2. 如何获取表达式的实际根(顺便提一下)可以在这个问题答案中找到:Getting the object out of a MemberExpression