Мне нужно создать функцию для оценки запросов по некоторым правилам перед их выполнением. Вот код:
public class DataInfo
{
public int A { get; set; }
public int B { get; set; }
public int C { get; set; }
}
static class Program
{
static void Main()
{
var data = new DataInfo()
{
A = 10,
B = 5,
C = -1
};
// the result should be -1
int result = Calcul<DataInfo>(data, x => x.A / x.B + x.C);
}
static int Calcul<T>(T data, Expression<Func<T, int>> query)
{
// PSEUDO CODE
// if one property used in the query have a
// value of -1 or -2 then return 0
// {
// return 0;
// }
// if one property used in the query have a
// value of 0 AND it is used on the right side of
// a Divide operation then return -1
// {
// return -1;
// }
// if the query respect the rules, apply the query and return the value
return query.Compile().Invoke(data);
}
}
В предыдущем коде исчисление хочет разделить A (10) на B (5), а затем добавить C (-1). В правилах сказано, что , если одно свойство, используемое в запросе, имеет значение -1 или -2, возвращает 0 . Так что в этом примере возвращаемое значение должно быть -1. Если запрос соответствует правилам, примените запрос к данным и верните значение.
Так, как я могу извлечь свойства, используемые в запросе, и проверить значение, используемое в них, перед применением запроса к данным?