c# - Extending member-access expression -


i have expression of type expression<func<towner, object>> created using lambda (syntax). has member-access expression somewhere in body. create expression selects property of mentioned expression's result.

i terms of c# should this:

expression<func<myclient, object>> exstartingpath = x => x.address;  expression<func<myclient, object>> exextendedpath = extendselection(exstartingpath, "street"); //exextendedpath should equivalent x => x.address.street 

how should extendselection(...) implemented? should decompose existing expression , compose new 1 using traversing technique or there api can 'append' member selection?

just grab body of lambda, apply member access that, , wrap whole thing new lambda.

public static expression<func<tsource, ttarget>> extendselection<tsource, ttarget>(     expression<func<tsource, ttarget>> expression, string member) {     var body = expression.propertyorfield(expression.body, member);     return expression.lambda<func<tsource, ttarget>>(body, expression.parameters); } 

Comments

Popular posts from this blog

python - TypeError: start must be a integer -

c# - DevExpress RepositoryItemComboBox BackColor property ignored -

django - Creating multiple model instances in DRF3 -