c# - 在 .NET 中寻找简单的规则引擎库

标签 c# .net .net-core logic rule-engine

<分区>

有谁知道一个好的 .NET 库规则库(最好是开源的)?我需要一些可以执行嵌套逻辑表达式的东西,例如 (A AND B) AND (B OR C OR D)。我需要比较对象属性,例如 A.P1 和 B.P1。 (理想情况下,我可以比较任何属性——A.P1 和 B.P2)。

它应该将规则存储在数据库中(我有很多简单的可配置逻辑)。它应该有一个规则创建/管理 API。管理工具必须检查实例以确定哪些属性可用以及存在哪些约束。

谢谢!


哦,还有一件事。作为规则引擎,我需要包含操作(命令)的概念。这些是表达式返回时执行的内容:

If (expression.Evaluation) { actions.Execute(); }

所以我认为规则是这样的:

class Rule
{
    Expression Exp;
    Actions[] Actions;
    Run() 
    { 
        if(Exp.Evaluate()) 
        { 
            foreach(action in Actions) 
            { 
                action.Execute(); 
            }
        } 
    }
}

最佳答案

同意 will 我会说使用来自工作流引擎系列的东西,尽管不是工作流。 检查System.Workflow.Activities.Rules有点命名空间——它在 .Net 3 中受支持,并内置于 .Net3.5 中。就像您提到的那样,您可以免费使用所有东西:

  • RuleCondition 为条件,RuleAction 为 Action

  • 用于描述的标准化格式 元代码(CodeDom - CodeExpressions)

  • 你可以插入任何类型的复杂性 进入那个(说实话除了 Linq 和 lambdas 等扩展 某种方法)通过 类型提供者

  • 有一个内置的规则编辑器 使用智能感知编辑

  • 因为规则是可序列化的,所以它可以是 容易坚持

  • 如果你打算在一个 数据库方案然后通过类型提供者 也可以实现

首先: Using rules outside of a workflow

Ps.: 我们正在广泛使用它,并且该命名空间中的内容比您想象的要多得多-> 一种完整的元算法语言

最重要的是:它易于使用 - 真的

关于c# - 在 .NET 中寻找简单的规则引擎库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/208659/

相关文章:

c# - 通过 IronPython 在 C# 中使用 NLTK

c# - 使用 MS SQL 服务器在 SQL 查询中给表友好名称

c# - EF 上下文在 docker 中没有响应

c# - 将 .Net Core 构建为 EXE 而不是 DLL

c# - 如何将参数从 ASP.NET 传递到 SSRS 报告?

c# - 如何避免空基抽象类?

c# - 将导航 url 设置为动态超链接

c# - 如果数据库中已存在值,如何显示消息?

.net - 用于数据库的 Guid.NewGuid().GetHashCode()

docker - Heroku 上的 .Net Core 和 Docker