评估规则
本文关键字:规则 评估 | 更新日期: 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;
}