#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