Je veux avoir la possibilité de construire la chaîne de propriétés à partir d'une expression donnée. J'ai pris la source pour la conversation d'ici (link).Execute/Invoke ConditionalExpression pour décider si utiliser la partie true ou false
Cela fonctionne plutôt bien lorsqu'il est utilisé comme décrit ici.
Mon problème est maintenant quand je passe une expression conditionnelle, par ex.
Foo ((MyClass c) => createChain c.SomeProperty: null?);
alors createChain
est un bool
et à l'intérieur du Foo
le premier chèque est un expr != null
d'aller plus loin.
Cependant, expr.Body.NodeType
est maintenant ExpressionType.Conditional
et je ne trouve pas la bonne façon d'exécuter/invoquer l'expression, donc je sais quelle partie (vrai ou faux) de l'expression je mettre pour me
. J'ai ajouté case ExpressionType.Conditional:
et j'ai coulé var ce = expr as ConditionalExpression
. Comment puis-je obtenir l'expression correcte à utiliser pour me
de ce
comme l'un est le c.SomeProperty
alors que l'autre serait null
en fonction de la valeur de 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;
Je ne trouve pas ce assez clair ... – meJustAndrew