позволить пользователю создавать динамические выражения из мастера графического интерфейса - PullRequest
1 голос
/ 24 мая 2011

Я хочу создать панель / мастер графического интерфейса, где пользователи моего приложения могли бы создавать собственные условия / выражения, используя свойства строго типизированной объектной модели. В основном как-то так.

Структура может быть вложенной (LHS / RHS может состоять из других выражений) и объединяться с другими выражениями с использованием операндов или / и / foreach.

Я хочу иметь возможность проверять правильные типы и значения для каждого подвыражения. В идеале конечный запрос должен быть запросом linq или деревом выражений.

Моя цель - позволить пользователям разрабатывать свои собственные стратегии или простые рабочие процессы.

Какой тип вы бы предложили для обработки выражений и какое решение для создания динамического запроса?

Я думаю представить выражения в виде строк, например

person.DateOfBirth > 1970 && person.Country != Country.Germany

, а затем создайте запрос linq, используя конкатенацию в качестве параметра в расширенном предложении .Where, созданном библиотекой Dynamic LINQ , как описано здесь.

Возможно ли создать динамически расширенное выражение или существуют ограничения для этого решения?

Какие альтернативные решения вы предлагаете?

1 Ответ

2 голосов
/ 20 октября 2011

Проверьте проект LINQKit, особенно класс PredicateBuilder.

...