#c# #expression
#c# #выражение
Вопрос:
У меня есть список Expression<Func<TRightModel, object>>
, из которого мне нужно составить список Expression<Func<TMiddleModel, object>>
У меня есть свойство TMiddleModel.RightModel
, которое дает значение RightModel
данного MiddleModel
. Я попробовал этот подход:
Expression<Func<TMiddleModel, object>> f = model =>
p.Compile().Invoke(model.GetRightModel());
(p — это Expression<Func<RightModel, object>>
).
Это компилируется нормально, но поскольку пользователю ‘f’ необходимо просмотреть выражение, оно завершается с ошибкой во время выполнения.
Не удалось найти никакого решения этой проблемы в Google. Есть какие-нибудь идеи?
Комментарии:
1. Взгляните на статические методы в Expression
2. Вам нужно будет вручную создать новое дерево выражений из старого, возможно, используя посетителя, и заменяя каждое вхождение
model
наInvocationExpression
formodel.GetRightModel()
.