주어진 표현식에서 propertyname-chain을 생성 할 수 있습니다. 나는 대화의 출처를 여기 (link)에서 가져왔다.Execute/Invoke 조건부 표현을 사용하여 참 또는 거짓 부분을 사용할지 결정합니다.
설명 된대로 사용하면 꽤 잘 작동합니다.
내 조건은 이제 조건식을 전달할 때입니다.
Foo ((MyClass c) => createChain? c.SomeProperty : null); 반면
createChain
는 bool
이며 expr != null
추가 이동을 위해 내부 Foo
제 1 체크이다.
그러나, expr.Body.NodeType
지금 ExpressionType.Conditional
내가 내가 me
설정해야합니다 식의 (true 또는 false) 어느 부분을 알 수 있도록 표현을 호출/실행하는 올바른 방법을 찾을 수 없습니다.
나는 case ExpressionType.Conditional:
을 추가했으며 캐스팅 된 var ce = expr as ConditionalExpression
을 추가했습니다. me
에 대해 ce
에서 올바른 표현식을 얻으려면 c.SomeProperty
이고 다른 하나는 이고 createChain
값에 따라 달라집니다.
case ExpressionType.Conditional:
var ce = expr.Body as ConditionalExpression;
me = (MemberExpression) (ce != null && /*ce.Invoke()*/ ? ce.IfTrue : ce.IfFalse); // here i need to know if to use true or false part of expr
break;
내가 ...이 충분히 명확한 – meJustAndrew