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
Post a Comment