Мы работаем с механизмом правил, основанным на лямбда-функциях. Каждая функция создается с типом:
Func<Term, bool>
Каждая функция потребляет объект типа Term и возвращает логическое значение. Термин представляет собой набор функций, таких как:
public class Term
{
public string Name { get; set; }
public int Age { get; set; }
public double Price { get; set; }
public int SomeCount { get; set; }
}
Функции определяют некоторые условия этих Условий. Например:
Func<Term, bool> function = t => t.Age >= 18 && t.Name == "Tom";
Func<Term, bool> function = t => t.Price >= 26 || t.Price < 3200;
...
Учитывая набор этих функций, есть ли способ обнаружить, если несколько функций возвращают true для какого-либо указанного c члена? Другими словами, есть ли способ проверить, не являются ли такие функции неинъективными? Грубое принуждение каждого возможного термина, конечно, не вариант.
Я не могу работать с данным термином. У меня есть набор этих функций, и я хочу знать, МОЖЕТ ЛИ БЫТЬ термин, для которого более чем одна функция возвращает true.
РЕДАКТИРОВАТЬ: я понимаю, что мне придется анализировать некоторые операторы и делать много жестко закодированные выражения для унификации операторов для каждой переменной, но возможно ли это? У меня проблемы, особенно с || -оператором.
Должен быть способ проверить, есть ли две функции, которые обе возвращают true для какого-либо определенного c члена.