我有一张如下表格:
RuleStep
StepID | Step Property | Step Condition Id | Step Value | Logical Operator | Next Step Id
其中一行可能如下: 100,Name,200(表示等于),AnyName,210(表示And),300(指向下一步id)。
以上意味着我应该评估一个规则,该规则有一个步骤,即Name应该等于AnyName,下一步由运算符AND链接。下一步可以说 - 年龄应该等于10。
这些规则应针对具有2个属性Age&的对象Person进行评估。姓名。我必须验证人名是否为AnyName,年龄是否为10。
你能告诉我怎么做吗?有没有可以支持这个的库? C#中是否有任何特定功能可以帮助我?谢谢, - 迈克
答案 0 :(得分:1)
C#中是否有任何特定功能可以帮助我?
是的,有。您可以从表中的数据LINQ Expression Tree构建一个compile it dynamically到函数对象中,并对目标对象执行结果lambda。图书馆需要一段时间的习惯,但是你得到的结构非常强大且非常快,所以花时间学习它的回报真的很大。
答案 1 :(得分:0)
您可以尝试通过NuGet提供的PredicateBuilder包中的LinqKit。
答案 2 :(得分:0)
使用反射的快速而肮脏的例子:
bool CheckEqualityRule (object target, string propertyName, string testValue)
{
var property = target.GetType().GetProperty(propertyName);
var value = (string)property.GetValue(target, null);
return value == testValue;
}