评估规则

时间:2012-06-12 06:47:44

标签: c# c#-4.0

我有一张如下表格:

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#中是否有任何特定功能可以帮助我?

谢谢, - 迈克

3 个答案:

答案 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;
}