Отображение выражений

#c# #.net-core #odata #automapper

#c# #.net-ядро #odata #автоматическое отображение

Вопрос:

Мне трудно отображать выражения для DataServiceQuery .

Мой вклад следующий: Expression<Func<TEntity, bool>> predicate и string entitySet

Теперь мне нужно преобразовать это в Expression<Func<TOutput, bool>> output

В настоящее время я использую AutoMapper и создал сопоставление между TEntity и TOutput , затем я пытаюсь сопоставить выражение следующим образом:

 var type = Type.GetType($"ServiceContext.{entitySet}, ServiceContext");
var predicateTargetType = typeof(Expression<>).MakeGenericType(typeof(Func<,>).MakeGenericType(type, typeof(bool)));
var mappedPredicate = _mapper.Map(predicate, predicate.GetType(), predicateTargetType);
  

Приведенный выше код может показаться, что он работает, во время выполнения он выполняется, однако проблема в том, что всякий раз, когда я использую mappedPredicate переменную, она выдает следующее исключение:

Система.Исключение InvalidOperationException: код должен быть недоступен

Слой, который вызывает этот код, ничего не знает о TOutput поэтому у меня есть только имя TOutput в строковом формате и выражение TEntity .

Любая помощь была бы большой благодарностью!

Комментарии:

1. Проверьте документы и тесты в репозитории.

2. @Lucian Спасибо, я как-то пропустил эту страницу, в итоге я сменил _mapper.Map(...) на _mapper.MapExpression(...) , и это сработало! :p