표현

2013-07-28 3 views
-1

의 얻기 루트 나 바로 당신에게 몇 가지 코드를 보여주지 : 표현

class MyClass { 

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

ExtractRoot

가 매개 변수로 Expression<Func<object>>을 받고있다.

고객 개체 'c'를 식 트리에서 추출하려고합니다. ExtractRoot 메서드에 전달하고 고객 개체를 나타내는 ConstantExpression을 얻는 방법을 알고 있습니다. 나는 그 객체에 ToString()를 호출 할 때, 나는 얻을이 인쇄 :
MyAssemblyName.CustomNamespace.MyClass + <> c__DisplayClass2

사람이 의미와 내가 내 고객의 ToString() 메소드를 호출 안한다있는 이유, 그것은으로 무엇인지 설명해 주시겠습니까 내가 얻는 물건이 고객이 아니라면, 왜 내가 무엇을 되 찾을 수 있습니까?

마지막으로 어떻게 실제 고객 오브젝트 또는 내 표현식의 루트를 얻을 수 있습니까?

+0

나는 'constantExpression.Value'라는 질문을 이해할 수 있을지 모르겠다. –

+1

() => c.FirstName은 형식이없는 대리자입니다. 루트에 도달하려면 c => c.FirstName의 형식으로 델리게이트가 필요합니다. –

+0

@JoachimIsaksson이 맞습니다. 'ConstantExpression'에 도착할 때까지 트리를 계속 내림차순으로 유지합니다. 내가 너에게 보여준 것을 얻을 까? –

답변