Я хочу создать панель / мастер графического интерфейса, где пользователи моего приложения могли бы создавать собственные условия / выражения, используя свойства строго типизированной объектной модели.
В основном как-то так.
Структура может быть вложенной (LHS / RHS может состоять из других выражений) и объединяться с другими выражениями с использованием операндов или / и / foreach.
Я хочу иметь возможность проверять правильные типы и значения для каждого подвыражения.
В идеале конечный запрос должен быть запросом linq или деревом выражений.
Моя цель - позволить пользователям разрабатывать свои собственные стратегии или простые рабочие процессы.
Какой тип вы бы предложили для обработки выражений и какое решение для создания динамического запроса?
Я думаю представить выражения в виде строк, например
person.DateOfBirth > 1970 && person.Country != Country.Germany
, а затем создайте запрос linq, используя конкатенацию в качестве параметра в расширенном предложении .Where
, созданном библиотекой Dynamic LINQ , как описано здесь.
Возможно ли создать динамически расширенное выражение или существуют ограничения для этого решения?
Какие альтернативные решения вы предлагаете?