评估规则

本文关键字:规则 评估 | 更新日期: 2023-09-27 18:36:47

我有一个如下表:

规则步骤

StepID | Step Property | Step Condition Id | Step Value | Logical Operator | Next Step Id

其中一行可能如下所示:100、名称、200(表示等于)、AnyName、210(表示 And)、300(指向下一步 id)。

以上意味着我应该评估一个规则,该规则有一个步骤说 Name 应该等于 AnyName,下一步由运算符 AND 链接。下一步可以说 - 年龄应该等于 10。

这些规则应针对对象进行评估 具有 2 个属性的人 年龄和姓名.我必须验证人员姓名是否为 AnyName 和年龄是否为 10.

你能告诉我我该怎么做吗?有没有可以支持这一点的库?C# 中是否有任何特定功能可以帮助我?

谢谢-话筒

评估规则

C# 中是否有任何特定功能可以帮助我?

是的,有。您可以从表中的数据生成 LINQ 表达式树,将其动态编译为函数对象,然后针对目标对象执行生成的 lambda。图书馆需要花一点时间来适应,但是你得到的构造非常强大和非常快,所以花时间学习它的回报确实是巨大的。

你可以尝试 LinqKit 包中的 PredicateBuilder,该包可通过 NuGet 获得。

使用反射的快速而肮脏的示例:

bool CheckEqualityRule (object target, string propertyName, string testValue)
{
    var property = target.GetType().GetProperty(propertyName);
    var value = (string)property.GetValue(target, null);
    return value == testValue;
}