c# - 我如何构建可以执行用户定义的规则引擎,如果在 C#.net 中有其他规则

标签 c# .net rule-engine

我需要构建新的规则引擎,其中我有这样的规则,以表格格式存储在 Excel 工作表中。

<If>  "Name = Nita "
<Value> "200"
<else> "Name = Gita"
<value> "300"
<LookInto> "/Name/@Income"

我有两个文件,比如 1 n 2。我需要在第一个文件中查看 Name 是 Nita 还是 Gita。基于执行,我将获得值(value)。现在,我需要将此结果值与第二个文件进行比较,该文件是一个 xml 文件,其路径已定义到 .

有人能建议我 C# 中有什么我可以有效地用来开发相同的东西吗,或者有人能建议我如何用 C# 实现这一点..我需要一些关于类设计的想法。

我正在使用 .Net 1.1。

最佳答案

首先,您需要创建可以定义规则的类。准备好此结构后,您将能够构建一个利用这些类的引擎。

我会考虑创建类似这样的东西:

class RuleEngine 
{
  public RuleMatch[] RuleMatches { get; set; }
  public void RunEngine(inputdata...) 
  {  
    // do processing in here
  }
}

class RuleMatch 
{
  public Rule[] Rules { get; set; }
  public Object ValueIfMatched { get; set; }
}

class Rule 
{
  public String FieldName { get; set; }
  public MatchType Match { get; set; }
  public Object Value { get; set; }
)

enum MatchType 
{
  Equal = 1,
  NotEqual = 2,
  GreaterThan = 4,
  LessThan = 8,
  Like = 16
}

然后从那里继续……

如果将此结构更改为具有可以添加到一组规则的一组规则,例如 (a AND b) OR (c AND d) - 我将把这个留给你暂时考虑一下。


请注意,我在这里使用了一些 C# 3.0 结构,您需要在 1.1 中创建完整的私有(private)属性。

关于c# - 我如何构建可以执行用户定义的规则引擎,如果在 C#.net 中有其他规则,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/771843/

相关文章:

javascript - JavaScript 中的规则引擎

.net - 构建后的 MsBuild 复制文件

c# - 尝试从 ExpandoObject 获取动态属性时出现 "System.StackOverflowException"错误

c# - 从 C# 连接到 node.js 服务器

c# - 如何从sql查询中的两个表中获取多列的唯一数据

c# - Icon.FromHandle : should I Dispose it, 或调用 DestroyIcon?

c# - 没有触发器的循环 Storyboard 动画

java - 基于 Java Web 的应用程序中来自 excel 的规则

optimization - OptaPlanner 是否支持对连续变量的优化和约束?

c# - 如何在C#中访问和重新格式化锯齿数组